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

node-addon-api 尝试 (1)

cpp
addon
nodejs
阅读 

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 就先这样吧

© 2021 icebreaker 苏ICP备19002675号-2
version:1.2.2