C ++ node.js Addons - Init()中的参数说明

时间:2015-10-29 14:25:42

标签: c++ node.js node.js-addon

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

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

1 个答案:

答案 0 :(得分:0)

一般情况下,您始终可以使用第二种方法模板,但exportsmodule会提供不同的选项。

使用以下示例:

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

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

所以你可以使用下面的JS代码,例如,它会使用export对象中的test函数将它打印到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。