所以闭包编译器很棒,但导出函数和定义extern似乎需要太多的手动工作。有没有办法告诉编译器它不应该删除任何函数,也不应该重命名任何未定义的函数?
这背后有两个主要原因:
-
如果函数或属性未在 javascript 文档的范围内定义,则它可能是在外部文件中定义的。因此,我不希望重命名这些。
-
如果函数是在给定作用域中定义的,但未在同一作用域内调用,则可能是在某些外部代码中调用的。因此,我想将此功能保留在文件中而不重命名它。
这样,我们可以简单地编译javascript文件,而不必担心外部库和导出从html页面调用的函数。
你应该以SIMPLE_OPTIMIZATIONS的优化级别运行编译器。不要被这个名字所迷惑,因为它仍然可以完全编译你的代码。主要区别在于SIMPLE_OPTIMIZATION不会重命名或消除全局范围内的死代码。这意味着外部和出口的要求不再存在。
为了避免这种情况,我在完整的脚本上运行闭包编译器,该脚本是应用程序所有脚本的串联。所以这是一个两步过程:
1 - 连接所有
2 - 运行闭包编译器
此外,您可能希望(正如我经常做的那样,由于 v1.8 之前的 jquery 问题)使用 compilationLevel="simple" 运行编译器。
串联非常重要,因为一般来说,缓慢与总大小无关,而主要与请求数量有关。
编辑 :当然,您必须自动化所有这些。如果您使用 ant,我可以为您提供 ant 任务定义。