提出问题
了解 js 文件加载前的准备工作
在《从 main 函数开始》这篇中说到了 LoadEnvironment()
函数负责加载 js 代码,但并没有继续说明加载细节。
这篇从 LoadEnvironment()
开始探究 js 代码加载的详细过程。
LoadEnvironment()
LoadEnvironment()
的逻辑分两部分:
- 加载并执行两个 js 文件:
loaders.js
node.js
,执行后得到两个启动函数; - 分别调用这两个启动函数:loaders_bootstrapper() 和 node_bootstrapper();
这段代码比较长,我们把不影响主逻辑的代码省略掉,然后直接在代码中以注释的形式来解释:
1 | void LoadEnvironment(Environment* env) { |
总结
LoadEnvironment()
主要是调用了两个 启动函数(Bootstrapper)
- loaders_bootstrapper()
- node_bootstrapper()
其中 loaders_bootstrapper() 主要实现了一个简单的模块加载机制名为 NativeModule
,主要用于加载内部模块的,会在 node_bootstrapper() 中用到;
而在 node_bootstrapper() 则加载并执行了用户的 js 文件(也就是通常的 app.js 或 index.js)。
这两个启动函数分别定义在 /lib/internal/bootstrap/loaders.js
和 /lib/internal/bootstrap/node.js
文件中;
接下来的两篇文,会分别对这两个文件进行详细的探究,弄清楚 js 文件加载执行的细节;