2011-03-18 34 views
28

我记得在github上看到了一个新的javascript编译器/缩小器,它甚至应该比google的闭包编译器更好。不幸的是,我不记得它的名字,并再次找到它。也许有人可以帮助我? :)最好的JavaScript编译器/缩小器

感谢, 科林

+3

Uglify只能与Closure Compiler的** Simple Mode **进行比较。它不能用Closure的**高级模式**做到这一点。在我看来,高级模式让Closure Compiler非常棒。 – 2011-03-29 08:43:33

+0

高级模式的问题是你必须专门为它编写你的代码,它不*只是在你的JavaScript上工作​​。 – kybernetikos 2012-11-07 18:49:37

回答

31

可能UglifyJS?这是jQuery项目当前使用的缩小器。

查看这些speed comparisons

+0

是的就是这样。谢谢! – gucki 2011-03-18 08:43:25

+0

+1很棒的链接,谢谢! – 2011-11-11 13:34:41

12

AFAIK封闭编译器的ADVANCED模式是镇上唯一的游戏,如果你想要全局死代码删除(又名树抖)和优化。这就是为什么像emscripten和ClojureScript以及Dart JavaScript翻译器这样的项目使用它的原因。

+0

Dart现在拥有自己的优化器,但原始的DartC编译器在后端使用了Closure Compiler。 – John 2014-06-17 20:59:37

+0

Rollup.js虽然不是一个缩小器,但它并没有树状摇摆。 – 2016-02-24 23:40:43

15

查看统计源:http://axod.blogspot.ca/2010/01/google-closure-compiler-advanced-mode.html

比较JSMin,由Douglas Crockford的和Yahoo! YUI

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% 

闭合将Javascript minifier的想法推进了一步。它通过做真正的编译来移除未使用的代码,内联变量并重写代码以使其尽可能小。

仅供参考,您可以在这里http://closure-compiler.appspot.com/home

+0

最后一个链接从我站在哪里死了。 – 2015-10-04 14:53:47

+1

@IsaacLyman这就是为什么在回答问题时,除了提供的任何链接之外,尽可能输出结果的好习惯,因为链接通常不能保证在100%的时间内生效 – Samuel 2015-10-11 02:55:44

+0

@Samuel您是否建议作者复制和粘贴Google关于闭包编译器的整个网站? – Qix 2016-11-15 19:21:35

0

访问谷歌关闭编译器UI这是一个老问题,但我遇到了一些新的信息,并希望分享。我在GitHub上找到了一个叫做RegPack的专用缩小器,https://github.com/Siorki/RegPack。我说专业化,因为它旨在优化小(1KB-4KB)文件,并与JavaScript中的Canvas,WebGL和音频组件一起使用。结果相当惊人,但也特定于您正在编写的JavaScript类型。

注意到,我只是在标准模式下运行Closure Compiler,对照我编写的库,https://github.com/robertdmunn/gadget-ui,将输出与我通过Grunt使用的UglifyJS进行比较。基本代码是20KB,Uglifier和Closure Compiler(标准模式)都是10KB。对于大多数使用情况,我认为这足够好。关闭高级模式仅将其减少到9KB。对于边缘案例 - 网络比例 - 体积小10%。不过考虑到gzip压缩将会减少文件大小60-80%,所以如果您使用gzip,使用高级模式的10%减少量仅比标准模式节省2-4%。 2-4%在网络规模上很有价值,但对于大多数开发者来说,可能不值得引入潜在的问题。

+0

,但高级模式的重点是,它不仅减少了大小:内联变量,删除死代码,深度混淆所有东西,展平对象...如果你的代码足够长,好处是无价的。如果是从头开始的项目,考虑到使用Closure Compiler高级模式约束并不难。 – rupps 2015-03-22 21:27:19