“Node扩展”一般有两种常见理解:
下面以最常见的「Node.js 原生扩展(C/C++ Addon)」入门为主,也会顺带提一下生态扩展。
你需要了解:
| 方式 | 说明 | 难度 |
|---|---|---|
| N-API | 官方推荐,稳定、跨版本 | ⭐⭐ |
| node-gyp + C++ | 传统方式 | ⭐⭐⭐ |
| TypeScript + NAPI-RS | 现代、好用 | ⭐⭐ |
✅ 新手强烈推荐:N-API 或 NAPI-RS
mkdir node-addon-demo
cd node-addon-demo
npm init -y
npm install node-addon-api
npm install -g node-gyp
addon.cc#include <napi.h>
Napi::Value Add(const Napi::CallbackInfo& info) {
double a = info[0].As<Napi::Number>();
double b = info[1].As<Napi::Number>();
return Napi::Number::New(info.Env(), a + b);
}
Napi::Object Init(Napi::Env env, Napi::Object exports) {
exports.Set("add", Napi::Function::New(env, Add));
return exports;
}
NODE_API_MODULE(addon, Init)
binding.gyp{
"targets": [
{
"target_name": "addon",
"sources": [ "addon.cc" ],
"include_dirs": [ "<!@(node -p \"require('node-addon-api').include\")" ]
}
]
}
node-gyp configure
node-gyp build
const addon = require('./build/Release/addon');
console.log(addon.add(1, 2)); // 3
不用写 binding.gyp,用 Rust 或简化 C++:
npm install @napi-rs/cli
napi new
适合:
如果你是指导入/写:
可以告诉我具体方向,我可以给针对性示例。
如果你愿意,可以告诉我:
✅ 你是想学 C/C++ 扩展 还是 Node 插件/中间件?
✅ 你的使用场景(性能?硬件?加密?)
我可以直接给你一个可运行的最小示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。