`

那些JavaScript周围的名词

阅读更多
初涉JavaScript的时候,经常会听到ECMAScript, NodeJS,Webkit,V8,PhantomJS什么的,到底这些都是些什么东西,有什么差别呢,在开发中,他们各自的角色又是什么?

ECMAScript
ECMAScript是一种由Ecma国际(前身为欧洲计算机制造商协会)通过ECMA-262标准化的脚本程序设计语言。凡是兼容ECMA标准的脚本语言就可以称之为ECMAScript,而JavaScript就是其中之一,另外还有微软的JScript等等。其诞生是多个大厂博弈的结果,网景公司在浏览器中引入JavaScript之后,微软等各大公司为了技术优势,都开发了自己的客户端脚本语言,最后为了统一规格,由欧洲计算机制造商协会出面协调,Netscape、Sun、微软、Borland组成的工作组确定了统一标准ECMAScript。

目前主流浏览器都支持了ECMAScript 5.1标准,而ECMAScript 6正在拟定中....,经过2次跳票之后,预计2015年6月发布。

尽管ECMAScript 是一个重要的标准,但它并不是JavaScript 唯一的部分,当然,也不是唯一被标准化的部分。根据ECMA-262的描述“ECMAScript可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的... .. ”因此,简单地说,ECMAScript 描述了以下内容: 语法 类型 语句 关键字 保留字 运算符 对象

JavaScript
前面提到JavaScript是ECMAScript标准的一个实现,但是除了ECMAScript定义的功能外,其还扩展了一些其它功能。因为JavaScript从诞生之初的目的就是生存于浏览器中,为HTML网页提供动态功能,直到NodeJS创造性的把其运用到了服务器端(这部分后面再聊)。所以一个完整的浏览器端的JavaScript实现是由3个不同部分组成的:
JavaScript是一种解释性脚本语言(代码不进行预编译),直接通过解释器运行,这个解释器是浏览器的一部分,我们称之为JavaScript引擎。

JavaScript引擎
JavaScript引擎是一个专门处理JavaScript脚本的软件程序,也有称之为JavaScript虚拟机的。一般会附带在网页浏览器中. 各个浏览器都有自己的引擎。具体可以到这篇文章中去查看:http://jser.in/%E6%B1%87%E6%80%BB%E5%90%84%E6%B5%8F%E8%A7%88%E5%99%A8%E6%A0%B8%E5%BF%83js%E5%BC%95%E6%93%8E%E5%8F%8A%E6%8E%92%E7%89%88%E5%BC%95%E6%93%8E%E6%B7%B1%E7%A9%B6-295.shtml
因此,我们平时提到的V8就是Chrome浏览器使用的JavaScript引擎。因为其高性能,NodeJS也是基于该引擎实现,因此听到的概率高于其它引擎。

排版引擎(浏览器内核)
WebKit是一个排版引擎,主要设计是用来让网页浏览器绘制网页。WebKit目前作为Apple Safari及Google Chrome(直到版本27,后续的版本已切换到自家的Blink)等浏览器的主要引擎。浏览器的排版引擎(Layout Engine或Rendering Engine)也被称为浏览器内核、页面渲染引擎或样版引擎,它负责获取网页的内容(HTML、XML、图像等等)、整理消息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。所有网页浏览器、电子邮件客户端以及其它需要根据表示性的标记语言(Presentational markup)来显示内容的应用程序都需要排版引擎。即其负责了整个浏览器的工作。有兴趣的可以看一下这篇文章《开发者需要了解的WebKit》:http://www.infoq.com/cn/articles/webkit-for-developers, 如果有时间,再看看浏览器是如何工作的就更有收获了:http://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/,和 http://coolshell.cn/articles/9666.html

而PhantomJS是一个无界面的WebKit,这样程序员就可以在命令行中模拟所有浏览器操作了,尤其是在做自动化测试时,无界面的WebKit运行速度会快很多,但是注意,因为其是基于WebKit的,所以并不能保证所有的浏览器下的行为都和测试的一致。

参考文献:
http://zh.wikipedia.org/wiki/ECMAScript http://zh.wikipedia.org/wiki/JavaScript http://blog.sina.com.cn/s/blog_636415010100z3ws.html
http://blog.csdn.net/teamossp/article/details/12715315
http://zh.wikipedia.org/wiki/JavaScript%E5%BC%95%E6%93%8E
2
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics