4

在创建 c++ node.js 插件时,有人可以解释 Init 的单参数形式和双参数形式之间的区别吗?

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

1 回答 1

0

一般来说,您总是可以使用第二种方法模板,但exportsmodule提供不同的选项。

使用以下示例:

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

会将函数添加test为导出对象上的“函数属性”。

test因此,您可以使用以下 JS 代码,例如,它会使用导出对象中的函数将其打印到标准输出:

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 回答