在nodejs中,引用c++代码的javascript是如何被V8引擎编译执行的?

问题描述 投票:0回答:1

我知道nodejs中使用internalBindings来帮助javascript代码引入c++模块,但是最终v8会将javascript编译成ast。此时ast既包含了javascript语言的内容,也包含了c++引用的内容。

执行ast时,想知道是否解析到了c++引用的内容时,先运行c++代码,然后返回结果,这样JavaScript就可以完全融入到c++代码中了。 v8就是这样运行js代码的吗?

javascript node.js v8
1个回答
0
投票

带有 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 函数对象。

© www.soinside.com 2019 - 2024. All rights reserved.