深入浅出 nodeJs 笔记

93 阅读1分钟

node与浏览器组件构成

都是基于事件的异步架构
浏览器 通过事件驱动来服务页面上的交互
Node 通过事件驱动来服务I/O

Node 特点

异步I/O: 在语言层面实现支持
事件与回调函数:事件编程方式:具有轻量级、松耦合、只关注事务等优势
单线程:线程间无法共享状态
优点:没有多线程的状态同步问题,没有线程上下文交换带来的性能开销
缺点:无法利用多核CPU、错误会引起整个应用退出,故健壮性不够,大量计算占用CPU导致无法继续调用异步I/O(javascript长时间执行将导致UI渲染和响应被中断)

解决方案(child_process):采用类似web workers的思路 解决单线程中大量计算问题、 健壮性问题、无法利用多核CPU问题

跨平台示意图

Node 应用场景

I/O 密集型: node面向网络且擅长并行 I/O
CPU 密集型:可以编写c++扩展模块、子进程的方式,将一部分node进程当作常驻服务进程用于计算
中间件
分布式应用

Node 使用者

前后端编程语言环境统一
Node 带来的高性能 I/O 用于实时应用
并行 I/O 使得使用者可以更高效的利用分布式环境
并行 I/O 有效利用稳定接口提升 Web 渲染能力
云计算平台提供 Node 支持 游戏开发领域
工具类应用