1、Node.js版本
2、Node.js安装
Mac
安装homebrew
brew install node@8或者10
确认node -v不出错即可
如果你需要多版本,可以使用n或者nvm两种工具
V8是什么(V8本事是多线程的)
功能:
将JS源代码变成本地代码并执行
维护调用栈,确保JS函数的执行顺序
内存管理,为所有对象分配内存
垃圾回收,是为了再次利用,重复利用无用的内存
实现JS的标准库
注意:
V8不提供DOM API
V8执行JS是单线程的
可以开启两个线程分别执行JS
V8本身是包含多个线程的,如垃圾回收为单独线程
自带event loop但Node.js基于libuv自己做了一个
什么是bindings
Node.js的工作流程
Event Loop是什么
什么是Event
计时器到期了(内部事件)
文件可以读取了、读取出错了(文件是外部的)
socket(tcp,udp编程的时候才有的)(http消息头)有内容了、关闭了(socket也是外部的)
什么是Loop
- loop就是循环,比如while(true)循环
- 由于事件是分优先级的,所以处理起来分先后的
- 所以Node.js需要按顺序轮询每种事件
- 这种轮询往往都是循环的,1>2>3>1>2>3
- 对于不同的事件,要分级
Event Loop
- 操作系统可以触发事件,JS可以处理事件
- Event Loop就是对事件处理顺序的管理
举例
三种不同的事件
setTimeout(f1,100)fs.readFile('/1.txt',f2)server.on('close',f3)
如果同时触发,Node会怎么办
肯定会有某种顺序(优先级)
这种顺序应该是认为规定的
libuv是什么
功能
总结
- 用libuv进行异步I/O操作
- 用event loop管理事件处理顺序
- 用C/C++库高效处理DNS/HTTP…
- 用bindings让JS能和C/C++沟通(把C++代码编译成.node文件,然后给js require
- 用v8运行JS
- 用Node.js库简化JS代码
- 这就是Node.js
Node.js API
官方提供给我们用的函数
