第一?/p>
node
简?/p>
诞生?/p>
Ryan Dahl 2009
?/p>
3
月宣布创建基?/p>
v8
的轻量级库,
5
月发布初?/p>
最初基?/p>
linux
系统?/p>
2011
?/p>
7
月发?/p>
windows
版本
选择
javascript
:设计高性能
web
服务器的要点:事件驱动、非阻塞
I/O
事件驱动?/p>
javascript
做两件事:操?/p>
DOM
和操?/p>
BOM
,什么时候干?需
要干的时候干。什么时候需要干?事件被触发的时候。即在事件被触发之前?/p>
所
有的结构被静态的呈现出来,在事件触发之后,动态的行为发生?/p>
重新产生新的
静态结构,事件与状态构成了事件驱动开发的基本要素?/p>
非阻?/p>
I/O
?/p>
js
单线程,通过回掉函数达到非阻塞的目的,非阻塞就是程序
会一直按顺序执行?/p>
直到所有代码执行完毕,
当遇到需要等待即异步函数的时候,
直接跳过,等同步队列执行完,再来执行?/p>
为什么叫
node
:开始起名为
web.js
,单纯作?/p>
web
服务器使用,随着发展,构
建了服务器,
客户端,
命令行工具等?/p>
发展为一个强制不共享任何资源的单线程?/p>
单进程的系统?/p>
为构建大型分布式应用提供基础设施?/p>
目标是构建快速的可伸?/p>
的网络应用平台。通过通信协议构建许多
node
,每?/p>
node
进程都是构建这个?/p>
络应用的一个节点?/p>
?/p>
javascript
的意义:
Node
与浏览器对比
Node
与浏览器运行机理相同,是浏览器在协议栈另一边的倒影?/p>
Node
打破?/p>
javascript
只能在浏览器中运行的局面,前后端环境统一,降低了前后端转?/p>
的代价?/p>
特点?/p>
异步?/p>
I/O
?/p>
同步
io
任务耗时是所有任务耗时之和?/p>
异步优势显而易见?/p>
事件与回掉函数;事件编程轻量级,松耦合,只关注事物点?/p>
单线程;不需要向多线程那样在意状态同步问题,不会有死锁存?/p>
缺点:无法利用多?/p>
cpu
,错误引起整个应用退出,
大量计算调用
cpu
会导致无法异步调?/p>
io(child_process)
跨平台:基于
libuv
实现跨平?/p>
网卡
硬盘
显卡
…?/p>
..
中间?/p>
Webkit
引擎
V8
引擎
解释
/
编译
HTML
JavaScript
Chrome
Node
网卡
硬盘
显卡
…?/p>
..
中间?/p>
(libuv)
V8
引擎
JavaScript