Node.js 允许通过 C/C++ 编写插件,这样你就可以在 Node.js 中使用底层的系统功能或者已有的 C/C++ 库。插件的编写需要使用 Node.js 提供的 C/C++ API。

以下是一个简单的例子,演示了如何编写一个使用 C++ 编写的简单插件,并在 Node.js 中调用它。

1. 创建 addon.cpp 文件:
   #include <node.h>

   using v8::FunctionCallbackInfo;
   using v8::Isolate;
   using v8::Local;
   using v8::Object;
   using v8::String;
   using v8::Value;

   // 定义插件函数,将两个数字相加
   void Add(const FunctionCallbackInfo<Value>& args) {
     Isolate* isolate = args.GetIsolate();

     // 获取传入的参数
     double value = args[0]->NumberValue() + args[1]->NumberValue();

     // 返回结果
     Local<Value> result = Number::New(isolate, value);
     args.GetReturnValue().Set(result);
   }

   // 注册插件函数
   void Initialize(Local<Object> exports) {
     NODE_SET_METHOD(exports, "add", Add);
   }

   // 将插件初始化函数导出
   NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)

2. 创建 binding.gyp 文件:
   {
     "targets": [
       {
         "target_name": "addon",
         "sources": [ "addon.cpp" ]
       }
     ]
   }

3. 使用 Node.js 编译插件:

   在终端中,使用以下命令将插件编译成共享库文件:
   node-gyp configure
   node-gyp build

4. 在 Node.js 中使用插件:

   创建一个名为 app.js 的文件,用于调用插件:
   const addon = require('./build/Release/addon');

   // 调用插件函数
   const result = addon.add(3, 5);

   console.log('Result from addon:', result);

5. 运行 Node.js 应用程序:

   在终端中运行以下命令:
   node app.js

   如果一切正常,你将会看到输出: