电子商务|如何开发 Node.js Native Add-on?( 三 )


$ git clone https://github.com/nodejs/node-addon-examples.git$ cd node-addon-examples/1_hello_world/node-addon-api/$ npm i$ node . 另一个重要的资源就是 N-API Resource 。 这个网站包含了开发、构建 Node.js add-on 的从入门到深入的许多信息与资料 , 比如
上手所需的工具; 从 NAN 向 N-API 的迁移导引; 不同构建系统的对比(node-gyp , CMake 等等); 多 Node.js 上下文支持和线程安全 。 结语 从 Node.js 诞生之初 , Node.js 就支持通过 C/C++ 代码来给 JavaScript 暴露更多的特性接口 。 随着时间积累 , 我们也认识到实现、维护、分发这些 add-on 一直存在许许多多的难点 。 而 N-API 就被 add-on 维护者们认为是解决这些难点的一个非常核心的领域 。 所以整个N-API 团队和社区都开始为 Node.js 核心建立起这样一套 ABI 稳定的 add-on API 。
而代表了 N-API 的这些 C API 现在已经是每一个 Node.js 发布版本的一部分 , 并且我们也有了可以通过 npm 安装的 node-addon-api 来提供这些 C API 的 C++ 封装 。 N-API 在诞生之初 , 就是以在不同 Node.js 版本之间 , 甚至是 Major 版本之间保证 ABI 与 API 兼容性为目标 , 而这也已经可以证明能够提供更多额外的好处:
我们不再需要在切换 Node.js 大版本之后重新编译 add-on 模块; 我们可以在除了使用 V8 作为 JavaScript 引擎的 Node.js 之外的运行环境实现 N-API , 也意味着这些为 Node.js 开发的 add-on 无需修改任何代码即可兼容这些运行环境 , 比如 Babylon Native , IoT.js 和 Electron 。N-API 是单纯的 C API , 这意味着我们可以使用 C/C++ 之外的语言、运行时开发 Node.js add-on , 比如 Go 或者是 Rust 。N-API 从 Node.js v8.0.0 开始以实验性功能发布到现在 , 虽然广泛应用的过程比较缓慢 , 但是模块开发者们也不断地给我们提交反馈与贡献 , 这也帮助我们不断地增加新特性和开发新的工具来帮助开发者们构建一个更好的 add-on 生态 。
今天 , N-API 在 add-on 的开发中使用已经非常广泛 。 比如一些使用非常多的 add-on 模块都已经迁移至基于 N-API 开发:
sharp (每周 ~900k 下载量) bcrypt (每周 ~500k 下载量) sqlite3 (每周 ~300k 下载量) 在过去的几年中 , N-API 获得了非常多的改进 。 而对于 add-on 开发者与用户来说 , 这也给他们带来了接近于原生 JavaScript 模块的开发、使用体验 。
开始贡献 我们在持续不断地改进 N-API 和 Node.js 的 add-on 生态 , 但是我们也一直非常需要帮助 。 你可以在以下途径在多种场景帮助 N-API 做的更好:
将你的 add-on 迁移到 N-API; 帮助你的应用依赖的 add-on 迁移到 N-API; 为 N-API 提出、实现新的特性; 为 node-addon-api 提出、实现新的基于 N-API 的特性; 为 node-addon-api 修复问题、增加测试用例; 为 node-addon-examples 修复问题、增加测试用例; 作者 | 吴成忠(昭朗)
【电子商务|如何开发 Node.js Native Add-on?】本文为阿里云原创内容 , 未经允许不得转载 。