绑定模块
本节介绍如何绑定模块
例子
首先需要创建模块:
JSModuleDef* module_def = JS_NewCModule(ctx, "MyModule", ModuleInitFn);
JS_NewCModule
的签名如下:
JSModuleDef *JS_NewCModule(JSContext *ctx, const char *name_str, JSModuleInitFunc *func)
传入模块的名称,以及一个JSModuleInitFunc
。
JSModuleInitFunc
是模块在初始化的时候调用的回调函数。一般在其中将属性绑定到模块上:
int ModuleInitFn(JSContext* ctx, JSModuleDef* m) {
// set JSValue to module
JS_SetModuleExport(ctx, m, "Add", JS_NewCFunction(ctx, AddFnBinding, "Add", 2))
JS_SetModuleExport(ctx, m, "Person", gClassConstructor)
// 0 - success
// < 0 - failed
return 0;
}
通过JS_SetModuleExport
将JSValue
绑定在模块定义m
中(也可以使用函数JS_SetModuleExportList
)。
最后,我们需要指定哪些属性是需要导出的:
JS_AddModuleExport(ctx, module_def, "Add");
JS_AddModuleExport(ctx, module_def, "Person");
使用JS_AddModuleExport
可以指定导出模块中的哪些属性(也可以使用JS_AddModuleExportList
)。