版本
双数是稳定版,单数是非稳定版,建议使用8以上的版本
node.js是什么
它是一个平台它将多种技术组合起来
让javascript也能调用系统接口、开发后端应用
node.js用到了V8引擎、libuv(跨平台的异步I/O能力)、c++实现的c-ares(DNS解析)、http-parser(解析http)、openSSL、zlib(加密)等库
node.s技术架构
- API(http/fs/等模块) 查看API
- node.js bindings(让js和C++通信)
- libuv 可以用于TCP/UDP/DNS/文件等的异步操作
- V8 将JS源代码变成本地代码并执行/维护调用栈,确保js函数的执行顺序/内存管理/垃圾回收/实现js的标准库,v8不提供DOM API,V8执行JS是单线程的,可以开启两个线程分别执行JS,v8本身是包含多线程的,如垃圾回收为单线程,自带event loop但node.js 基于libuv自己做了一个
evnet loop
什么是event loop
操作系统可以触发事件,JS可以处理事件。
Event Loop就是对事件处理顺序的管理
计时器到期了,文件可以读取了,读取出错了,socket有内容了,关闭了
什么是loop
loop就是循环,比如whill(true)循环
由于事件是分优先级的,所以处理起来也是分先后的
所以node.js需要按顺序轮询每种事件
这种轮询往往都是循环的,1>2>3>1>2>3