源码解读:Node 的程序架构及启动流程
本节有一定理解难度,建议新手同学在完成前面章节后,再来消化本节。
通常,网上搜 Node 的架构或者源码,经常搜到这样一张图,大体把 Node 分为了 3 层:
- 第一层是对外暴露的 API,比如 fs/buffer/net 等,直接 require 进来用
- 第二层可以看做是桥接层,一头连 JS,一头连 C++,让这两种不同语言直接借助 layer 互相调用,比如 Node 项目中针对底层模块所封装的各种 bindings,或者我们可以直接从外部来引入 C++ 模块作为插件使用,通过 JS 直接调用第三方 C++ 模块
- 最后一层,就是 Node 整个底层所依赖的一坨 C/C++ 库,包括提供 JS 解释与运行的 v8 引擎,提供 crypto 加密算法的 openssl 等等。
那么这三层是如何分工协作的,他们的关系是什么,