4

C++ node.js アドオンを作成するときの Init の 1 引数形式と 2 引数形式の違いを誰か説明できますか?

void Init(Local<Object> exports) {}
void Init(Local<Object> exports, Local<Object> module) {}
4

1 に答える 1

0

一般に、常に 2 番目のメソッド テンプレートを使用できますが、exportsmoduleのオプションを提供することもできます。

次の例を使用します。

void Init(Local<Object> exports) {
  NODE_SET_METHOD(exports, "test", MyTest);
}

testexports オブジェクトに関数を「関数プロパティ」として追加します。

したがって、次の JS コードを使用できます。たとえば、testexports オブジェクトの関数を使用して stdout に出力します。

const test = require('./path/to/node/addon/addon.node');
test.test('my message');

一方で:

void Init(Local<Object> exports, Local<Object> module) {
  NODE_SET_METHOD(module, "exports", MyDummyCallback);
}

完全なモジュール ( module) を提供し、エクスポートを上書きできるようにします。JS から次のようなものを呼び出すことができます。

const test = require('./path/to/node/addon/addon.node');
test('test');

testオーバーライドされたモジュールを使用して、メッセージを tty に出力します。

于 2015-10-29T19:58:58.747 に答える