我通过SIMPLE_OPTIMIZATIONS
通过Closure编译后运行正常的javascript。但我想执行执行死代码删除的ADVANCED_OPTIMIZATIONS
。
在阅读了一些相关文档here之后,我相信我的main()
函数,我通过<body onload="main()">
调用的函数正在被我的编译器消除。为了确认这一点,我在console.log('hello');
函数中添加了main()
行代码。在文本编辑器中使用简单和高级优化打开Closure编译的结果时,我可以在简单版本中找到console.log('hello');
,但它在高级版本中不存在。
所以我的问题是,是否有一种优雅的方式告诉编译器main()
无法访问? (或许我在做别的事情......)
答案 0 :(得分:3)
使用事件侦听器绑定它,而不是在html中内联它。例如,而不是:
<强> HTML 强>
<body onload="main()">Test</body>
<强> JS 强>
var main = function() { /* Do something */ }
使用
新JS
var main = function() {
console.log("Here!");
}
window.addEventListener("load", main);
然后,您可以从HTML中删除onload="main()"
。这在JavaScript中也被认为是一种很好的做法。
答案 1 :(得分:0)
您还可以使用--closure_entry_point
标志。无论文件中包含main
,请在该文件中添加goog.provide('myapp.entrypoint')
之类的内容,然后将--closure_entry_point=myapp.entrypoint
传递给编译器。