Nodejs C++ 插件
简单 hello world ,亲测成功!
使用 node-gyp 的开发者可以使用 npm install -g node-gyp 命令进行安装
该文件会被 node-gyp(一个用于编译 Node.js 插件的工具)使用。
1 2 3 4 5 6 7 8
| { "targets": [ { "target_name": "hello", "sources": [ "hello.cc" ] } ] }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <node.h>
namespace demo {
using v8::FunctionCallbackInfo; using v8::Isolate; using v8::Local; using v8::Object; using v8::String; using v8::Value;
void Method(const FunctionCallbackInfo<Value>& args) { Isolate* isolate = args.GetIsolate(); args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world")); }
void init(Local<Object> exports) { NODE_SET_METHOD(exports, "hello", Method); }
NODE_MODULE(NODE_GYP_MODULE_NAME, init)
} // namespace demo
|
所有的 Node.js 插件必须导出一个如下模式的初始化函数:
1 2
| void Initialize(Local<Object> exports); NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
|
NODE_MODULE 后面没有分号,因为它不是一个函数(详见 node.h)。
module_name 必须匹配最终的二进制文件名(不包括 .node 后缀)。
命令行执行:
1
| node-gyp configure build
|
调用C++插件
1 2 3
| const addon = require('./build/Release/hello');
console.log(addon.hello());
|
输出:
成功!