创建并使用插件【electron-vue】创建Nodejs c++插件,并在electron-vue中调用(addon)
整体了解
参考 Node.js Addons (作者Scott Frees)
参考 从暴力到 NAN 再到 NAPI——Node.js 原生模块开发方式变迁
- *.node 本质上是 *.dll 的动态链接库
- nan 全称 Native Abstractions for Node.js ,即 Node.js 原生模块抽象接口。
- 兼容各不同 Node.js 版本,使其在任意版本都能被编译使用
- 一次编写好的代码在不同版本的 Node.js 下也需要重新编译
- N-API
- 以 C 的风格提供稳定 ABI 接口
- 不同版本的 Node.js 使用同样的接口,这些接口是稳定地 ABI 化的,即应用二进制接口(Application Binary Interface)
- 在不同 Node.js 下,只要 ABI 的版本号一致,编译好的 C++ 扩展就可以直接使用,而不需要重新编译
- node-addon-api
- 简化了使用 C ++时由Node.js提供的基于C的N-API的使用
代码参考
nodecpp-demo (nan 例子)
node-addons-learn (napi 例子)
node-addon-examples (绝了!nan、napi、node-addon-api 对比)
辅助文档
参考 v8 API 文档
参考 nan 文档
参考 napi 文档 (C API)
参考 node-addon-api 文档 (C ++ API)
napi 相关
报错解决
1、使用nan报错 Error: Cannot find module 'nan' | 错误:找不到模块“ nan” #528
npm install nan
2、 node-gyp rebuild 报错 LINK : fatal error LNK1104: 无法打开文件:×××.lib
参考 node-gyp编译问题
用#pragma comment(lib, ".xxx.lib")这种方式报错,是因为相对路径写得有问题。
应用
参考 使用node-addon-api编写c/c++扩展(传递复杂对象)
参考 在 Node.js 和 C++ 之间使用 Buffer 共享数据