(二)ECMAScript与DOM/BOM
1.1996-08,包含JScript的IE3.0发布
2.1996-11,Netscape将JavaScript提交给ECMA
3.1997-06,ECMA-262发布
4.JavaScript = ECMAScript + DOM + BOM
(三)Gmail与Google V8
1.2004-04-01,Gmail发布
2.2005-02-08,Google Maps发布,后又推出街景服务
3.2008-09-02,Google Chrome发布,一同面世的还有V8
4.I/O阻塞
(四)新浪潮中的前端框架
1.DOM操作:jQuery / ExtJS / YUI
2.结构化前端框架:AngularJS / Backbone.js / Ember.js
(五)在服务器上运行JavaScript的尝试
1.Rhino引擎
2.javax.script API
(六)Node为何选择了JavaScript?
1.原生支持异步
2.历史包袱
3.开发门槛
(七)另一种实现:Fibjs
(八)全栈语言:JavaScript
三、Node.js的特点
(一)部署简单方便
1.环境配置简单,只要安装Node.js即可。
2.注重约定。
3.项目所需要扩展、插件、资源相对独立,不易冲突。
(二)事件驱动
主要观点:根据当前出现的事件,调动资源进行相关的处理。
(三)异步编程
异步的实现方式:
1.回调函数
2.事件监听
3.订阅发布
4.I/O阻塞
(四)高效与性能
1.单个操作的性能并不优于其它解决方案
2.通过优化资源调配和I/O操作来实现高效
(其它语言对IO的处理:
PHP:原地等待,开多进程
C/C++:利用线程,程序要自己维护线程和资源的状态)
(五)单线程与多进程
Google V8是单线程的,所以Node.js与同样是单进程的。为了更好的利用CPU资源,可以利用子进程和多进程:
1.子进程:Node.js的child_process模块
2.多进程:PM2等第三方工具
(六) Node.js的缺点
1.大量采用匿名函数,使得抛出的异常不易阅读
2.try/catch限于同步代码,使得异常捕获较为复杂
3.单线程:可靠性
4.不适合CPU密集型的场景
5.回调的代码习惯影响阅读