Node特点
1.异步I/O
2.事件,回调函数
3.单线程
编程思想的转变:
1.同步编程 -------> 异步编程
2.单线程编程
Node应用场景
技术选型极为重要,为不同的场景选择合适的技术
1.I/O密集型
node利用事件循环的处理能力,而不是启动每一个线程为每一个请求服务
2.cpu密集型
模块机制
commonJS规范
模块的引入,导出,标识符
require,module,exports
模块加载的过程:
路径解析,定位文件,编译等
Node模块种类
1.Node核心模块
2.第三方文件模块
第三方模块中,模块之间散列在各地,相互之间不能直接引用
在模块之外,包和NPM是将模块联系起来的一种机制
commonJS 包的规范
包是在模块基础上进一步组织javascript代码
commonJS包规范是理论,NPM则是实践
NPM帮助第三方模块完成发布,安装,依赖等
借助NPM,Node与第三方模块之间形成了很好的生态系统
NPM常用命令
如果将个人的包上传到npm资源仓库服务器中,需要npm中注册账户,创建仓库
异步I/O
为何node要使用异步I/O?
1.用户体验
前端中javascript与UI渲染在同一个进程中,同步情况下,响应糟糕
异步I/O可以消除前端UI阻塞
2.资源分配
单线程缺点:容易阻塞I/O,无法利用多核cpu资源
多线程缺点:容易造成死锁,状态同步
Node给出中间方案:
利用单线程,远离多线程的死锁,状态同步
利用异步I/O,远离单线程的阻塞,更好的利用cpu
提供类似前端web workers的子线程高效利用多核cpu
Node的异步I/O
完成整个异步I/O环节的有:事件循环,观察者,请求对象
Node异步编程