通过Node.js构建c++ addon插件模块的方式

博客介绍了Node.js插件开发的几种方式。使用node - addon - api模块,解决了ABI与Node.js版本兼容问题;NAN用宏定义兼容不同Node版本,但存在不向下兼容和需多次编译问题;NAPI可使模块在更高版本无需重新编译;还提到直接用v8的api,因底层易有版本不兼容问题,不建议使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用 Node-API,该项目维护着一个node-addon-api模块。本质上是对 Node-API的上层封装,解决了ABI与Node.js版本上的兼容问题,一般直接是使用node-addon-api模块进行插件开发。

2.使用 NAN, NAN 解决了混乱的C++原生模块,不再让一个模块只能被若干个 Node 版本使用,而提出使用宏定义来解决这个问题,所以说NAN是一大堆宏定义,兼容各种 Node 版本的宏定义。做到了一次编写,到处编译。但是不会向下兼容(即无法处理不同Node.js版本与 ABI之间的问题,例如当插件使用 electron 5.0.9 编译,但是集成的electron应用使用 electron11 打包,此时就会出现一个问题,也就是 Node.js 的 ABI 的版本不一致的问题)

另外这种设计模式还是依然有缺点,那就是多次编译,也就是说你写的插件如果到了更高的 Node 版本,还是需要再次编译,因此有了 NAPI,它旨在使 Addons 与基础 JavaScript 引擎的更改保持隔离,并使为一个主要版本编译的模块可以在 Node 的更高主要版本上运行,而无需重新编译。

3.直接使用最低层的 v8 的 api 的方式(该方式因为比较底层,不建议直接使用该方式,因为v8的迭代很快,一些函数及特性容易变化,可能会导致版本不兼容导致需要适配消耗时间成本)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值