- 版本:双数是稳定版,单数是非稳定版。
1. Node.js安装
官网下载,下载完后在命令行检查:输入node -v可以显示版本即可
可以使用的周边工具
- nrm用于切换下载源
- yarn(可以代替npm) 和 yrm(可以代替nrm)
- ts-node可以运行TypeScript和Node
node.js是什么
- 它是一个平台,它将多技术组合起来,让JavaSCript也能调用系统,开发后端应用
- c/c++实现的c-ares,http-parser,OpenSSL,zlib
2.Node.js技术架构
什么是bindings
背景
- c/c++实现了一个http_parser库,很高效
- 想调用这个库,需要一个中间的桥梁
bindings
- Node.js用C++对http_parser进行封装,使它符合某些要求,封装的文件叫做http_parser_bindings.cpp
- 用Node.js提供的编译工具将其编译为.node文件
- JS代码可以直接require这个.node文件
- 这样JS就能调用c++库,中间的桥梁就是binding
- 由于Node.js提供了很多binding,所以加s
- 这个就是bindings
3.JS与C++
4. Node.js工作流程
5.V8是什么
功能
- 将JS源代码变成本地代码并执行
- 维护调用栈,确保JS函数的执行函数
- 内存管理,为所有对象分配内存
- 垃圾回收,重复利用无用的内存
- 实现JS的标准库
注意
- V8不提供DOM API
- V8执行JS时单线程的
- 可以开启两个线程分别执行JS
- V8本身是包含多个线程,如垃圾回收为单个线程
- 自带event loop 但 Node.js基于libuv自己做了一个
6.Event Loop是什么
什么是Event
- 计时器到期了
- 文件可以读取了,读取出错了
- socket有内容了,关闭了
什么是Loop
- loop就是循环,比如while(true)循环
- 由于事件是分优先级的,所以处理起来也是分先后的
- 所以Node.js需要按顺序轮询每种事件
- 这种轮询往往都是循环的
Event Loop
- 操作系统可以触发事件,JS可以处理事件
- Event Loop就是对事件处理顺序的管理
// todo