当 JavaScript 代码调用 C++ 模块时,通常是通过一些封装函数或接口来实现的。V8 不会直接将 JavaScript 代码嵌入到 C++ 代码中执行,而是通过封装的方式将参数传递给 C++ 模块,然后由 C++ 模块执行相应的操作。C++ 模块执行完操作后,将结果返回给 JavaScript 代码。
所以,V8 并不是将整个 JavaScript AST 和 C++ 代码混合在一起运行的,而是通过调用 C++ 模块来执行底层操作,并将结果返回给 JavaScript 代码。这种交互使得 JavaScript 能够调用底层的系统功能,从而扩展了其能力。但是 V8 本身并不是一个混合执行 JavaScript 和 C++ 的引擎,它主要负责执行 JavaScript 代码。
node.js issues中有一个很有意思的问题,可以帮助我们理解这个过程:
https://github.com/nodejs/help/issues/3079 |