【问题标题】:Best javascript compiler/minifier [closed]最佳 javascript 编译器/压缩器 [关闭]
【发布时间】:2011-07-17 23:47:45
【问题描述】:

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

谢谢, 科林

【问题讨论】:

  • Uglify 只能与 Closure Compiler 的 Simple Mode 进行比较。它无法完成 Closure 的高级模式所能做的事情。在我看来,高级模式让 Closure Compiler 异常出色。
  • 高级模式的问题是你必须专门为它编写代码,它不能在你的javascript上工作​​

标签: javascript compiler-construction minify


【解决方案1】:

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

看看这些speed comparisons

【讨论】:

    【解决方案2】:

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

    比较 JSMin,Douglas Crockford 和 Yahoo!小唯

    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 UI http://closure-compiler.appspot.com/home

    【讨论】:

      【解决方案3】:

      AFAIK Closure Compiler 的 ADVANCED 模式是镇上唯一的游戏,如果您想要全局死代码删除(又名摇树)和优化。这就是 emscripten 和 ClojureScript 以及 Dart javascript 翻译器等项目使用它的原因。

      【讨论】:

      • Dart 现在有自己的优化器,但最初的 DartC 编译器确实在后端使用了 Closure Compiler。
      • 虽然不是压缩器,但 Rollup.js 可以进行 tree-shaking。
      【解决方案4】:

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

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

      【讨论】:

      • 但高级模式的意义在于它不仅仅是减小大小:内联变量、删除死代码、深度混淆所有内容、扁平化对象......如果你的代码足够长,那么好处是无价的.如果这是一个您从头开始的项目,那么在考虑到 Closure Compiler 高级模式约束的情况下编写它并不难。
      猜你喜欢
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-14
      • 2010-09-28
      • 2019-11-03
      • 1970-01-01
      • 2010-10-09
      相关资源
      最近更新 更多