与CommonJS模块不同,ECMAScript模块是由ECMAScript语言规范指定的。在V8引擎实现了ECMAScript模块之后,Node.js也实现了ECMAScript模块。Node.js是基于V8引擎的,所以我想知道V8引擎剂量Node.js在实现ECMAScript模块时利用了哪些特性。
发布于 2022-03-01 10:11:49
我知道这有点老了,但给你:
V8本机通过v8::Isolate::SetHostImportModuleDynamicallyCallback
和v8::Isolate::SetHostInitializeImportMetaObjectCallback
实现ECMAScript模块。
当v8解析样式import ... from ...
的导入时,将调用这些回调。然后,NodeJS在内部执行一些模块解析,然后进行模块导入:
// 1. Compile the module
auto module = v8::ScriptCompiler::CompileModule(...).ToLocalChecked();
// 2. Instantiate the module
module->InstantiateModule(context, ResolveCallback).ToChecked();
// 3. Evaluate the module
module->Evaluate(context).ToLocalChecked();
这只是一个非常基本的概念。如果您想要一个更广泛(但仍然很简单)的示例,请查看这里。
https://stackoverflow.com/questions/68449161
复制相似问题