我正在寻找一个使用 Node js 插件和 C++ 的项目。我遇到了两个可以使用的抽象库 NAN 和 N-API。但是我无法决定应该使用哪一个。我无法找到这两个库之间的正确比较。
两者的优缺点和区别是什么?他们之间如何选择?
到目前为止,我发现 NAN 有更多关于异步调用的在线教程/文章。但 N-API 得到了 Node 的正式支持(并且是在 NAN 之后创建的,作为更好的替代方案,尽管不确定。)
我的理解是这样的:
The Node-API https://nodejs.org/docs/latest-v10.x/api/addons.html#addons_n_api(以前称为 N-API)在 v8.0.0 中被添加到核心 Node.js 接口中。 “它的目的是将插件与底层 JavaScript 引擎的更改隔离开来……”引用文档。它还提供了一些其他围绕缓冲区和异步工作等内容的包装器(这应该有助于避免它们中提到的一些底层不稳定 API)ABI 稳定性的影响 https://nodejs.org/docs/latest-v10.x/api/n-api.html#n_api_implications_of_abi_stability部分)。
nan(节点的本机抽象) https://github.com/nodejs/nan#native-abstractions-for-nodejs确实较旧,因此也支持旧版本的node.js - 回到node.js 0.8!现在尽管其作者声称回到2017年 https://github.com/nodejs/nan/issues/676#issuecomment-307214546:
正如我在其他地方提到的,N-API 并不意味着可以直接用于任何用途。这个观念从何而来?它是一个(实际上是内部的)低级基础设施层,旨在提供 ABI 稳定性。上面还会有另一层。
…我在官方 Node.js 附加文档中没有看到太多关于此效果的警告。也许这另一条评论 https://github.com/nodejs/nan/issues/674#issuecomment-306960508更有洞察力一点:
是的,您仍然应该使用 NAN 进行生产。它涵盖了 Node.js 的每个相关版本。另请注意,N-API 不适用于最终用户。你最终应该使用https://github.com/nodejs/node-addon-api https://github.com/nodejs/node-addon-api.
同样,那是 2017 年 6 月由当时的 nan 维护者完成的。与此同时,node-addon-api 似乎已经成熟并保持活跃。事实上,我发现-addon-api 存储库中的评论 https://github.com/nodejs/node-addon-api/issues/439#issuecomment-459468329目前只有一个月大:
…目标的一部分是让从 nan 的过渡变得容易。
所以我认为答案是:
- use nan https://github.com/nodejs/nan如果您想要成熟且向后兼容的东西
- use node-addon-api https://github.com/nodejs/node-addon-api如果您想要 C++ 中的前瞻性内容
- use
Node-API/N-API
如果您习惯使用 C 语言工作并处理可能的较低级别的问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)