Node.js 总体学习(按需了解)(偏底层原理)
#Node
运行时结构
上层:
- acron
- node-inspect
- npm
- 用户代码
中上层:
- Node.js Core (JavaScript)
- N-API
中下层
Node.js Core(C++)
底层
-
V8 JavaScript Runtimne, 诊断调试工具(inspection)
-
libnv 各个操作系统API
- eventloop 事件循环
- syscall 系统调用
-
nghttp2 HTTP协议2
-
zlib 解压缩算法
-
c-ares
-
llhttp
- 序列化
- 反序列化
- 得到数据返回给libuv
-
OpenSSL
例子: 使用 node-fetch 请求调用时会怎么做?
- 通
npm安装node-inspect,到达用户代码,在用户代码里调用node-inspect - 因为
用户代码都是JavaScript代码,所以会到达V8引擎去执行 V8在底层调用Node.js Core(JavaScript)的HTTP模块,HTTP的模块再去调用Node.js Core (C++)的底层模块Node.js Core (C++)调用llhttp,llhttp对HTTP协议的==序列化==,==反序列化==,得到数据通过libuvlibuv创建TCP连接,再把数据发给远端
反过来:
远端传回数据以后,通过libuv进行事件循环得到消息- 把数据给
llhttp进行解析 - 在把数据给
node.js Core(JavaScript) - 在传回给
用户代码,用户代码收到整个数据