雅虎之间!UI Compressor、Dean Edwards Packer和jsmin,它们产生了更好的结果,无论是在占用空间方面还是在混淆时的错误更少。
8 回答
比较最佳压缩器的一个好方法是Arthur Blake的 JavaScript CompressorRater。
您通常感兴趣的是使用 GZIP 压缩后的大小(您应该配置您的 Web 服务器以执行压缩)。
最好的结果通常来自YUI Compressor或Dojo ShrinkSafe。差异是如此之小,以至于过了一会儿我停止了比较,我只使用了 YUI Compressor。
编辑: 自从最初提出这个问题以来,已经发布了 2 个新的缩小器。它们通常至少与 YUI Compressor 一样好,甚至更好。
编辑2:
- UglifyJS,由 jQuery 团队选择用于官方 1.5 版本
更好在这里有点主观,因为需要考虑多个因素(甚至超出您列出的因素):
- 压缩大小并不能说明全部情况,因为在浏览器解释之前运行解包代码需要额外的时间,因此激进的压缩器可能会导致运行时性能变慢。
- 当您控制输入代码时,最容易避免错误 - 明智地使用分号大有帮助。在您的代码上运行 JSLint,并修复任何报告的问题。
- 当然,代码本身的样式和大小会影响结果。
- 最后,值得牢记的是,服务器端 gzip 压缩总是会比任何代码压缩产生更小的下载量,尽管一些代码压缩工具会更有效地与 gzip 结合使用。
我的建议是通过多个压缩器运行您打算压缩的代码(诸如CompressorRater之类的自动比较工具可以帮助...),并根据结果进行选择 - 记住在之后测试、分析和比较实际的页面加载时间。
一定要看看Dojo Shrinksafe。它最近被重新设计,显然性能得到了改善。
完全披露,我支持:http ://www.toptensoftware.com/minime ,它进行缩小、混淆和一组合理的 lint 样式检查。目前它产生的输出比 Yui 小,不如 Closure 好。
这是一个老问题,当时还不存在Google Closure Compiler 。我还没有使用它,但它看起来非常好。
作为一名 Mootools 用户,我注意到 Mootools 已经用 YUI Compressor 取代了 Dean Edwards 的 Packer。我还记得 Ajaxian.com 上有一个讨论,其中 Julien(Compressor 的作者)指出了 YUI Compressor 做得更好的领域。我使用了 Compressor 并且从未发现任何问题,但我从未研究过在混淆时哪个产生的错误更少。
YUI Compressor 的压缩比 Packer 更安全、更紧凑。我相信 Packer 需要完美地形成 JavaScript,否则在加载脚本时会导致 JavaScript 错误。尽管如此,无论您使用哪个,通过 Gzip 压缩文件,您都将获得最大的性能提升。
Codeplex 上还有一个用于 .NET 的 YUICompress端口(其中包括 TFS 的构建任务)。