使用node-gyp編寫簡單的node原生模組
阿新 • • 發佈:2021-06-25
通過樣例,讓我們瞭解如何編寫一個node的原生模組。當然,這篇文章還有一個目的,是為了方便以後編寫關於node-gyp的文章,搭建初始環境。
基於node-addon-api
基於node-addon-api的nodejs外掛,使用的是node的標頭檔案:#include <node.h>
。
hello_world.cc
#include <node.h> void Method(const v8::FunctionCallbackInfo<v8::Value>& args) { v8::Isolate* isolate = args.GetIsolate(); args.GetReturnValue().Set(v8::String::NewFromUtf8( isolate, "world").ToLocalChecked()); } void Initialize(v8::Local<v8::Object> exports) { NODE_SET_METHOD(exports, "hello", Method); } NODE_MODULE(NODE_GYP_MODULE_NAME, Initialize)
binding.gyp
{
"targets": [
{
"target_name": "hello_world",
"sources": [ "hello_world.cc" ]
}
]
}
index.js
const binding = require('./build/Release/hello_world');
console.log(binding.hello());
package.json
... "scripts": { "build": "node-gyp configure && node-gyp build", "run:demo": "node index.js" }, ...
整體結構
按照如下命令依次執行:
$ npm run build
// 使用node-gyp配置並構建
$ npm run run:demo
// 執行Demo
輸出如下:
D:\Projects\node-addon-demo>npm run run:demo
> [email protected] run:demo
> node index.js
world