https://zh.wikipedia.org/wiki/Native_API
Windows API就是基于Native APi封装得
两种方案
- addonhttp://nodejs.cn/api/addons.html 编译成.node文件 直接require。
写c++ 然后使用node-gyp编译成.node(要会写C++ 成本高)
- node-ffi https://github.com/node-ffi/node-ffi
node-ffi本质也是一个使用c++编写动态链接库,所以要编译node-ffi
(不需要编写源代码,不需要重新编译)本地库/第三方C++库
.dll和.node都是二进制哦

官方建议的是使用addon,因为node-ffi性能有折损
- node-gyp (两个都要使用)
- windows-build-tools
一、C++ Addons

Node C++ Addons(扩展)
- node的扩展是C++编写得动态链接库共享对象,能被Node require使用
- node的扩展 .node文件,本质上是动态链接库(windows得.dll,Mac得.dylib, linux得.so)
- 编写c++扩展得主流两种写法
- NAN(Native Abstractions for Node.JS):一次编写、到处编译
- N-API(node的一部分,独立于runtime v8):统一API,无需重新编辑(不需要考虑node版本)
本身是基于C的API
c++封装的node-addon-api
.node文件本质上就是一个dll,require他的时候会根据平台调用不同的windows api去load 一个dll
使用C++扩展
gyp为true 这样别人用你的库的时候就会编译
C++文件 使用node-gyp来打包 成.node文件
安装的时候会使用node-gyp帮我们rebuild
registry-js的就是打包成了一个.node文件
二、node-ffi Electron集成dll(动态链接库)
本质上node-ffi是js加载和调用动态库的node.js拓展,让我们不用编写任何c++代码,创建于本地dll库的绑定
不需要每次都重新编译,性能有折损。
什么时候用dll
- 使用系统API操作(唤起微信的窗口)
- 使用第三方dll,硬件设备进行通信

