浏览器中除了 V8 作为 JavaScript 引擎外,还有 WebKit 布局引擎。 除了 HTML、WebKit和显卡这些UI相关基数没有支持外,Node 的结构与 Chrome 十分相似,它们都基于事件驱动和异步架构。
- 浏览器通过事件驱动服务界面上的交互;
- Node通过事件驱动服务I/O。
Node 的特点
异步 I/O、事件与回调函数、单线程、跨平台
单线程的缺点: 无法利用多核CPU、错误会引起整个应用退出、大量计算占用CPU导致无法继续调用异步I/O。
如何解决大量计算占用CPU无法继续调用:
- 浏览器使用 Web Workers 处理的
- Node 采用类似的思路 child_process。
Node 是基于 libuv(平台层架构) 实现跨平台的架构示意图
由于Node是单线程,Node是擅长I/O密集型的应用场景。