C++ node.js Addons - Init() 中的参数说明
C++ node.js Addons - Explanation of parameters in Init()
有人可以解释一下在创建 c++ node.js 插件时 Init 的单参数形式和双参数形式之间的区别吗?
void Init(Local<Object> exports) {}
void Init(Local<Object> exports, Local<Object> module) {}
一般来说,您总是可以使用第二种方法模板,但 exports
或 module
提供了不同的选项。
使用以下示例:
void Init(Local<Object> exports) {
NODE_SET_METHOD(exports, "test", MyTest);
}
会将函数 test
作为 "function property" 添加到您的 exports 对象上。
因此您可以使用以下 JS 代码,例如,它会使用导出对象中的 test
函数将其打印到标准输出:
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。
有人可以解释一下在创建 c++ node.js 插件时 Init 的单参数形式和双参数形式之间的区别吗?
void Init(Local<Object> exports) {}
void Init(Local<Object> exports, Local<Object> module) {}
一般来说,您总是可以使用第二种方法模板,但 exports
或 module
提供了不同的选项。
使用以下示例:
void Init(Local<Object> exports) {
NODE_SET_METHOD(exports, "test", MyTest);
}
会将函数 test
作为 "function property" 添加到您的 exports 对象上。
因此您可以使用以下 JS 代码,例如,它会使用导出对象中的 test
函数将其打印到标准输出:
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。