我正在使用 emscripten 为某些库提供 Javascript 绑定(bind)。 Emsripten 将代码打包到命名空间(全局变量)中,称为“模块”。
我想更改命名,以便我可以使用反射(reflect)库用途的名称,并在我为其他库编写绑定(bind)时进一步防止变量名冲突。
我在文档中找不到显示如何执行此操作的任何地方。有谁知道如何更改 emscripten 使用的默认命名空间?
最佳答案
您可以更改 EXPORT_NAME
默认设置为 Module
.您可以在命令行上作为 emcc
的选项执行此操作:
emcc -s EXPORT_NAME="'MyEmscriptenModule'" <other options...>
然后该模块将以您指定的任何名称在全局范围内可用:
window.MyEmscriptenModule == {...}
请注意,如果您设置 MODULARIZE
设置为 1,则设置为 EXPORT_NAME
将作为全局范围内的函数创建,您必须调用该函数来初始化模块。您可以将设置对象传递给此函数,它将返回模块实例:
var myModuleInstance = window.MyEmscriptenModule({noInitialRun: true});
如果您正在使用一些模块加载器,例如 RequireJS,并且根本不想向全局命名空间添加任何内容,另一种方法是使用 --pre-js <file>
和 --post-js <file>
包装最终 Javascript 的选项,如 this answer to a question on Emscripten with module loaders .
关于javascript - 在 emscripten 中更改默认命名空间 'Module',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30152622/