最佳的JavaScript编译器/压缩器

35

我记得在 GitHub 上看到过一个新的 JavaScript 编译器/压缩器,甚至应该比 Google 的 Closure Compiler 更好。不幸的是,我无法记住它的名称并且再次找到它。也许有人可以帮助我?:)

谢谢, Corin


3
“Uglify”只能与Closure Compiler的“Simple Mode”相比。它无法像Closure的“Advanced Mode”那样实现更多功能。在我看来,“Advanced Mode”才是使Closure Compiler变得非常强大的关键所在。 - Stephen Chung
高级模式的问题在于你必须为其编写特定的代码,它不能仅仅在你的JavaScript上“自动工作”。 - kybernetikos
4个回答

34

也许是UglifyJS?这是jQuery项目目前在使用的压缩工具。

可以查看这些速度比较


19

查看这个网址的统计数据:http://axod.blogspot.ca/2010/01/google-closure-compiler-advanced-mode.html

与道格拉斯·克罗克福德和雅虎YUI的JSMin进行比较。

Minifier           | Bytes   |% of original| gz Bytes | gz % original
None               | 428,264 |    100%     |   91,750 |     100%
JSMin              | 249,372 |     58%     |   57,338 |     62%
YUI                | 235,214 |     55%     |   55,990 |     61%
Closure (STANDARD) | 219,446 |     51%     |   53,515 |     58%
Closure (ADVANCED) | 166,774 |     39%     |   47,372 |     52%

Closure将JavaScript缩小器的思想推进了一步。它通过实际编译来删除未使用的代码,内联变量并重写代码,使其尽可能小。

仅供参考,您可以在此处访问Google Closure Compiler用户界面http://closure-compiler.appspot.com/home


12

据我所知,如果你想要进行全局死代码删除(即树摇)和优化,Closure Compiler的高级模式是唯一可用的选择。这就是为什么像emscripten、ClojureScript和Dart javascript翻译器这样的项目使用它的原因。


如今Dart有自己的优化器,但最初的DartC编译器在后端确实使用了Closure Compiler。 - John
Rollup.js虽不是一个缩小工具,但它支持树摇。 - Brian M. Hunt

0
这是一个老问题,但我找到了一些新信息并想要分享。我在GitHub上发现了一个名为RegPack的专业缩小工具https://github.com/Siorki/RegPack。我说它是专业的,因为它旨在优化小型(1KB-4KB)文件,并且可以与JavaScript中的Canvas、WebGL和Audio组件一起使用。结果相当惊人,但也特定于您正在编写的JavaScript类型。

注意到这一点后,我刚刚在标准模式下使用Closure Compiler对我编写的库https://github.com/robertdmunn/gadget-ui进行了比较,以便与我通过Grunt使用的UglifyJS进行比较。基本代码为20KB,Uglifier和Closure Compiler(std mode)都将其缩小为10KB。对于大多数用例,我认为这已经足够好了。Closure高级模式只将其缩小到9KB。对于边缘情况-Web规模-10%的缩小是不错的。但请注意,根据我的经验,gzip压缩可以将文件大小减少60-80%,因此仅使用高级模式减少10%,如果您使用gzip,则仅比标准模式节省2-4%。对于Web规模来说,2-4%很有价值,但对于大多数开发人员来说,可能不值得引入潜在的问题。


但是高级模式的重点在于它不仅可以减小代码体积:内联变量,删除无用代码,深度混淆所有内容,压缩对象...如果你的代码足够长,那么这些好处是无价的。如果你从头开始编写一个项目,考虑到Closure Compiler高级模式的限制并不难。 - rupps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接