[编程开发] 在nodejs中,javascript中的c++代码引用是如何被V8引擎 ...

[复制链接]
lwflove1999 发表于 2023-11-4 05:24:59|来自:北京 | 显示全部楼层 |阅读模式
我知道nodejs中使用了internalBindings引入c++模块,但是最终v8会将javascript编译为ast,那么此时ast是既包含javascript语言的内容,也有c++引用的内容,在执行ast的时候,我猜想是不是解析到c++引用的内容时,先运行c++代码,然后把结果返回,这样JavaScript就能完全融入c++代码了,v8是这样运行js代码吗
全部回复2 显示全部楼层
light999 发表于 2023-11-4 05:25:55|来自:北京 | 显示全部楼层
当 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
limao100 发表于 2023-11-4 05:26:25|来自:北京 | 显示全部楼层
我知道答案了,我把一些概念弄混了

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则