阻止Emscripten创建全球"模块"

时间:2014-10-25 17:45:18

标签: javascript module global emscripten

有没有办法阻止emscripten创建窗口范围的全局"模块"?

我使用像emcc --bind -O3 --memory-init-file 0 whatever...之类的东西生成一些.js。如果我包含输出脚本,则窗口对象会被各种内部emscripten函数和对象所占据。

我试图像这样包装生成的代码:

  

Some.Namespace.Whatever =(function(){...生成代码...;返回Module;})();

一切似乎都运行良好,但是emscripten仍然会创建窗口范围的全局"模块" (其他内部功能都消失了。)

2 个答案:

答案 0 :(得分:0)

也许您可以使用pre和post js选项将代码包装在自执行匿名函数中? [0]所以他的前js是(function () {,后js是})();。这可以像使用Unix cat的构建步骤一样手动完成。

那或者把它推到一个工人身上。 [1]

我认为emscripten不会在发出的代码中分配window.Modulethis.Module,但我现在不是要检查的计算机,也许你可以吗?

[0] https://github.com/kripken/emscripten/blob/1c12291bcb77fac633d9fbe08c817746c4ce24c3/site/build/text/docs/tools_reference/emcc.txt#L269-L277

[1] https://github.com/kripken/emscripten/blob/1c12291bcb77fac633d9fbe08c817746c4ce24c3/site/build/text/docs/tools_reference/emcc.txt#L468-L474

答案 1 :(得分:0)

从今年2月4日开始this commit,我认为这是Emscripten的一部分> v1.29.9,如果代码被某种方法包装,则Module对象不会在全局范围内公开。