我知道nodejs中使用internalBindings来帮助javascript代码引入c++模块,但是最终v8会将javascript编译成ast。此时ast既包含了javascript语言的内容,也包含了c++引用的内容。
执行ast时,想知道是否解析到了c++引用的内容时,先运行c++代码,然后返回结果,这样JavaScript就可以完全融入到c++代码中了。 v8就是这样运行js代码的吗?
带有 c++ 代码引用的 javascript […] v8 将把 javascript 编译成 ast。此时ast既包含了javascript语言的内容,也包含了c++引用的内容。
您对本机绑定的性质有误解。不存在引用 C++ code 的 JS code,也不存在包含两种语言代码内容的 AST。只有 JavaScript 代码会被解析为 AST。
从 JS 调用 C++ 时,是一个 JS object 引用了一个 C++ object 并调用它的方法。 Nodejs 的内部绑定是由 C++ 代码设置的,创建代表原生资源的 JS 对象和调用 C++ 函数的 JS 函数对象。