1.5 JavaScript的不同实现
本节将为读者介绍JavaScript的不同实现。
1.5.1 ECMAScript
ECMAScript是JavaScript的正式名称。ECMAScript标准规定了这门编程语言的标准和规范,是编程语言的核心部分;也定义了最小限度的API(Application Programming Interface,应用程序接口)可以操作数值、文本、数组、对象等。
但是,前端开发只学习编程语言的核心部分是远远不够的,还要学习JavaScript的宿主环境所提供的API。API是一些预先定义的函数,用来提供给开发人员在其他程序中调用,而又无须访问源码或理解内部工作机制的细节。宿主环境就是运行JavaScript的平台,负责对JavaScript进行解析编译,以实现代码的运行。
事实上,浏览器是JavaScript最早的宿主环境,也是目前较常见的运行环境。换句话说,运行在浏览器上的JavaScript可以调用浏览器提供的API。
随着互联网的普及,在2010年诞生的Node.js成为JavaScript的另一个宿主环境。从此JavaScript不仅可以在浏览器上运行,也可以在Node.js上运行。与浏览器相同,运行在Node.js上的JavaScript也可以调用Node.js提供的API。
1.5.2 BOM
BOM(Browser Object Model,浏览器对象模型)是浏览器为JavaScript提供的一系列API,它提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。通过BOM开发人员可以进行浏览器定位和导航、获取浏览器和屏幕信息、操作窗口的历史记录、读取地理定位、进行本地存储及Cookie操作等。
1.5.3 DOM
DOM(Document Object Model,文档对象模型)是HTML文档为JavaScript提供的一系列API。当创建好一个页面,并将其加载到浏览器时,DOM就悄然而生,它会把网页文档转换为文档对象。通过DOM我们可以获取页面中的元素,设置元素的属性和样式,也可以创建、插入或删除节点,页面中的各种特效都需要通过DOM来实现。
1.5.4 Node.js
Node.js由Ryan Dahl于2009年开发,是一个基于Chrome V8引擎的JavaScript运行环境。Node.js使用了一个事件驱动、非阻塞式I/O模型,是使JavaScript可以运行在服务端的开发平台。有了Node.js,JavaScript就不仅仅是一门前端的编程语言,它也可以是后端的编程语言。
相较于运行在浏览器上的编程语言JavaScript,二者的语法标准规范大体相同。不同的是,Node.js提供不同于浏览器的API,主要提供文件操作、网络操作、进程和线程操作等相关的API。Node.js中既没有BOM,也没有DOM。