Skip to main content

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 请求调用时会怎么做?

  1. npm安装node-inspect,到达用户代码,在用户代码里调用 node-inspect
  2. 因为用户代码 都是JavaScript代码,所以会到达V8引擎去执行
  3. V8在底层调用Node.js Core(JavaScript)HTTP模块, HTTP的模块再去调用Node.js Core (C++)的底层模块
  4. Node.js Core (C++)调用 llhttp,llhttp对HTTP协议的==序列化==,==反序列化==,得到数据通过libuv
  5. libuv创建TCP连接,再把数据发给远端

反过来:

  1. 远端传回数据以后,通过libuv进行事件循环得到消息
  2. 把数据给 llhttp 进行解析
  3. 在把数据给 node.js Core(JavaScript)
  4. 在传回给用户代码,用户代码收到整个数据