双数版本是稳定版,单数不是稳定版,一般用8以上
node.js是一个平台,它蒋多种技术组合起来,让js调用系统接口,也能开发后台应用
V8引擎
libuv
C++实现的一些库zlib等
我只会写js,但是要调用C++写的库,直接调用不行得有个中间层,binding就是这个中间层,需要根据环境进行配置,然后就集合成立bindings,
每个平台都有自己的异步I/O库,
libuv是一个跨平台的异步U/I库
功能:可用于UDP,TCP,DNS,文件等的异步操作
将js代码变成本地源码执行
维护调用栈,确保JS函数执行的顺序
内存管理,分配所有对象的内存
垃圾回收,重复利用无用的内存
实现JS的标准库
注意:
V8不提供dom api
V8执行JS是单线程的
可以开启两个线程执行JS
V8本身是多线程的
什么是Event
计时器到期
文件可以读了
socket有内容了,关闭了
什么是Loop
Loop是循环,
因为事件是分优先级的,所以处理起来也是分优先级的,轮询优先级
Event Loop
操作系统可以触发事件JS处理事件
Event Loop就是对事件处理顺序的管理
Event LOOP的流程图
重点阶段
timers检查计时器
poll轮询,检查系统事件
check检查setLmmediate回调
其他阶段用的少
大部分时间是在poll阶段