此页面需要javascript支持,请在浏览器中启用javascript

node-addon-api 尝试 (1)

cpp
addon
nodejs
共392个字,阅读时间 2 分钟
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://icebreaker.top/articles/2020/11/node-addon-api-1

node-addon-api

Start

首先 nodejs 提供了一个 demo 里面每个项目都包含

  • nan: C++-based abstraction between Node and direct V8 APIs.
  • N-API: C-based API guaranteeing ABI stability across different node versions as well as JavaScript engines.
  • node-addon-api: header-only C++ wrapper classes which simplify the use of the C-based N-API.

ok ok 知道了,3 种都能达到目的且 node-addon-api 的本质就是 N-API 的包装类 ,看看 3 种 hello-world

  • nan 里面一大堆 v8:: 啥的类型和 Nan:: 啥的,感觉不学 v8 玩不了,放弃
  • napi binding.gyp 配置最少,直接原生 nodejs 内置,少个 npm 依赖项,代码 napi_value/status 去的,比较无聊
  • node-addon-api binding.gyp 配置最多,代码量看上去最少,而且从我个人代码审美的角度,比较喜欢,就决定是你了

Ctrl + C/V

先复制一个 hello-world 的 demo 进来,yarn 一下 改改名字

ok gyp 报错了,我是 win10 系统 装个亲切的 Visual Studio 2019 选上 C++ 的桌面开发 然后

npm install -g node-gyp node-gyp configure --msvs_version=2019 npm config set msvs_version 2019 还要装个 python 真的烦 安装教程 我们也可以用 admin 的 Power Shell 直接

npm install --global windows-build-tools

里面 python 啥的都有 不过是 2.7 版本的 msvs_version 版本还是要手动指向的

这样,我们的 hello-world 就可以跑了

我尝试了一下直接用 node debug 是进不了 cpp 代码的

binding 我试了一下,感觉他就是在生成的一大堆文件里面找 .node 的一个包

binding.gyp 的 target_name 就是 在调用 js binding 部分的入参

装了 vscode 的 cpp 插件 之后,智能提示也有了

ok 就先这样吧