温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Node扩展如何入门

发布时间:2026-09-24 17:30:42 来源:亿速云 阅读:96 作者:小樊 栏目:软件技术

“Node扩展”一般有两种常见理解:

  1. Node.js 原生扩展(C/C++ Addon):用 C/C++ 扩展 Node.js 能力
  2. Node.js 生态中的“扩展/插件”开发:如 Express/Koa 中间件、CLI 扩展等

下面以最常见的「Node.js 原生扩展(C/C++ Addon)」入门为主,也会顺带提一下生态扩展。


一、Node.js 原生扩展(C/C++ Addon)入门

1. 先具备基础

你需要了解:

  • JavaScript / Node.js 基础
  • C 或 C++ 基础
  • 命令行(npm、node、gcc/clang)

2. 三种主流方式

方式 说明 难度
N-API 官方推荐,稳定、跨版本 ⭐⭐
node-gyp + C++ 传统方式 ⭐⭐⭐
TypeScript + NAPI-RS 现代、好用 ⭐⭐

✅ 新手强烈推荐:N-API 或 NAPI-RS


3. 用 N-API 写第一个扩展(示例)

(1)初始化项目

mkdir node-addon-demo
cd node-addon-demo
npm init -y

(2)安装依赖

npm install node-addon-api
npm install -g node-gyp

(3)编写 C++ 文件 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)

(4)配置 binding.gyp

{
  "targets": [
    {
      "target_name": "addon",
      "sources": [ "addon.cc" ],
      "include_dirs": [ "<!@(node -p \"require('node-addon-api').include\")" ]
    }
  ]
}

(5)构建

node-gyp configure
node-gyp build

(6)在 Node 中使用

const addon = require('./build/Release/addon');
console.log(addon.add(1, 2)); // 3

4. 更现代的方式:NAPI-RS(推荐)

不用写 binding.gyp,用 Rust 或简化 C++:

npm install @napi-rs/cli
napi new

适合:

  • 不想折腾编译
  • 想跨平台
  • 想写高性能模块

二、Node.js 生态“扩展”入门(非原生)

如果你是指导入/写:

  • Express 中间件
  • Koa 插件
  • ESLint 插件
  • Vite / Webpack 插件

可以告诉我具体方向,我可以给针对性示例。


三、学习资源推荐

  • 官方文档:https://nodejs.org/api/n-api.html
  • node-addon-api:https://github.com/nodejs/node-addon-api
  • NAPI-RS:https://napi.rs/

如果你愿意,可以告诉我: ✅ 你是想学 C/C++ 扩展 还是 Node 插件/中间件?
✅ 你的使用场景(性能?硬件?加密?)

我可以直接给你一个可运行的最小示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手