您在部署过程中是否有JS代码压缩的步骤?您是否有任何JavaScript预处理器,允许您保留注释和console.log,并自动剥离它们?您的JavaScript是否由GWT或Script#生成?您是否使用ANT或其他工具自动化部署?
我看到很多JavaScript代码看起来像是直接从编辑器中复制出来的,包含大量空格和注释。这些有多少是因为不关心部署代码的状态,而有多少是源于开放网络的精神呢?
您在部署过程中是否有JS代码压缩的步骤?您是否有任何JavaScript预处理器,允许您保留注释和console.log,并自动剥离它们?您的JavaScript是否由GWT或Script#生成?您是否使用ANT或其他工具自动化部署?
我看到很多JavaScript代码看起来像是直接从编辑器中复制出来的,包含大量空格和注释。这些有多少是因为不关心部署代码的状态,而有多少是源于开放网络的精神呢?
我通常使用 JSLint 来检查它是否无虫,然后使用 YUI compressor 进行打包/编码。
最终我得到一个拼接后的lib.js文件和一个精简版的lib.min.js文件。一个用于开发,一个用于生产。TextMate命令有助于自动化整个过程。
我仍在寻找一个好的解决方案来对我的脚本进行(单元)测试。
以下是关于如何最小化JavaScript源代码的有趣迷你基准测试:
http://www.ericmmartin.com/comparison-of-javascript-compression-methods/
简而言之:
很多问题可能是因为不关心那些使用速度较慢的机器和连接的人,而假设每个人都有50Mbps的线路和3GB的RAM。
我们在.NET环境下作为构建过程的一部分对我们的(手写+插件、jQuery等)JS进行了缩小。没有预处理器,这是我们一旦有时间肯定要做的事情。
P.S. 顺便说一句,我们没有使用console.log,因为这会破坏IE。相反,我们有一个简单的包装函数,类似于:
function log(stuff) {
if (window.console && window.console.log) {
console.log(stuff);
}
};
我想分享一下我的JavaScript部署方法。请查看这篇博客文章:http://www.picnet.com.au/blogs/Guido/post/2009/12/10/Javascript-runtime-compilation-using-AspNet-and-Googles-Closure-Compiler.aspx
这也包括在运行时(需要时)编译代码(使用Google的Closure编译器)。
谢谢Guido
还有YUI Compressor的.NET端口,它允许您: