微信小程序JavaScript实现——简明教程(七)

 

一、JavaScript

前面我们说过小程序是通过JavaScript来实现的,JavaScript是一种轻量的,解释型的,面向对象的头等函数语言,是一种动态的基于原型和多范式的脚本语言,它支持面向对象命令式和函数式的编程风格,那么这里的轻量是指我们在入门JavaScript语言时,我们在学习的时候会觉得他没有其他编程员学习起来那么重。那么解释性呢,是指我们所编写JavaScript语言,他在运行时机器会把它翻译成对应的机器语言。但我们其他的编程语言,比如c或c++,他在执行的时候会被翻译成对应的一个二进制文件。

那么JavaScript语法是比较接近于JAVA和C++都是面向对象编程的,对于我们学过Java编程语言的初学者来说,可能会把JavaScript和Java联系到一起,其实这两者是没有任何的内在联系。

二、JavaScript的实现

1、nodejs中的JavaScript实现

image-20200122094251483

nodejs中的JavaScript是有ECMAScript,Native模块和NPM组成。Native是一个原生的模块,我们可以使用该模块实现一些JavaScript本身没有的能力。NPM是一个包管理系统,是目前世界上最大的一个开源生态系统,我们可以使用NPM扩展包来快速的实现一些功能。

另外nodejs是基于google的一个v8引擎实现的,使用了高效轻量级的事件驱动,我们通常把nodejs作为一门后端的语言来使用。

2、小程序中的JavaScript实现

image-20200122095214077

小程序的JavaScript的,它是由ECMAScript,小程序框架和小程序封装的一个API模块组成,和浏览器中的JavaScript相比,是没有BOM对象的,也缺少NPM包管理,所以小程序中我们也没办法去使用原生库MPM包进行一些包管。

在上面我们说到JavaScript和Java是没有关系的,不过和JavaScript比较相近的我们解一下——ECMAScript。

ECMAScript是一种由ECMA模型通过ECMAS262标准化的脚本程序设计语言,ECMAS262规定了ECMAScript语言的几个重要组成部分,分别是语法,类型,关键字,操作符合和对象,而我们平常使用的浏览器里面的JavaScript和在nodejs中使用的JavaScript,还有小程序里面的JavaScript,它都是基于ECMAScript的一种实现。

image-20200122101444326

简单的来说我们可以理解,为ECMAScript是我们平常所说的普通话,那么后者呢,其实就是我们各地的方言了。只是说我们后者他去封装了自己的一些模块特性,那么我们刚刚所说的浏览器里面的JavaScript和在nodejs中使用的JavaScript,还有小程序里面的JavaScript的实现其实都是不一致的。

image-20200122100046483

上面是浏览器中的JavaScript,它是由ECMAScript,DOM和BOM组成。BOM指的是我们浏览器的对象模型,而DOM呢,指的是我们浏览器的一个文档对象模型。

###

三、小程序宿主环境差异

其实在小程序里,不同平台的JavaScript它的脚本运行环境其实也是有所不同的,这种不同主要体现在我们这三个平台的运行环境不一致。

image-20200122100426322

在iOS平台上运行的小程序的JavaScript代码其实是运行在一个JavaScriptCore中,然后再渲染。

在安卓上运行的小程序的JavaScript是通过X5Core来解析,然后由X5内核来渲染。

在微信开发者工具中,小程序的JavaScript代码是运行在nwjs中,然后再渲染。

截止到目前的ECMAS,我们简称为ES,它是有8个版本,大部分我们使用的是es5和es6的标准。但是截止到目前在小程序中iOS8和IOS9所使用的运行环境并没有完全的兼容到es6的标准,所以我们在es6中写的一些语法和关键字,它其实是不被兼容到的。

所以我们经常会发现,在开发者工具和我们手机里面的真机,他们同样的代码所表现的是不一致的,那么我们就可以使用开发者工具的远程调试功能来进行一个真机调试,看看小程序页面在真机上的表现,

本节我们讲到了JavaScript的基础概念,以及我们在小程序里面的JavaScript和我们平常所使用的JavaScript有哪些不一样的地方。

推荐阅读:

本文为博主原创文章,知识共享,开源精神,转载注明出处。