以下是一个简单的例子,演示了如何编写一个使用 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
如果一切正常,你将会看到输出: