1. 程式人生 > 其它 >使用node-gyp編寫簡單的node原生模組

使用node-gyp編寫簡單的node原生模組

通過樣例,讓我們瞭解如何編寫一個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