最佳JavaScript压缩器

时间:2020-03-05 18:43:30  来源:igfitidea点击:

什么是最好的JavaScript压缩器?我正在寻找一种工具:

  • 易于使用
  • 压缩率高
  • 产生可靠的最终结果(不会弄乱代码)

解决方案

回答

YUI Compressor是必经之路。它具有很高的压缩率,经过了良好的测试,并在许多顶级站点中得到使用,并且,我个人建议这样做。

我已经将它用于我的项目,而没有一个JavaScript错误或者打h。而且它有很好的文档。

我从未使用过它的CSS压缩功能,但是它们也存在。 CSS压缩同样有效。

注意:尽管Dean Edwards的/ packer /的压缩率比YUI Compressor更好,但在使用它时遇到了一些JavaScript错误。

回答

JSMin是另一个。

回答

尝试JSMin,获得C#,Java,C和其他端口,并且也很容易获得。

回答

这是执行此操作的HttpHandler的源代码,也许会对我们有所帮助

回答

几年后,UglifyJS再次回顾这个问题,似乎是目前最好的选择。

如下所述,它可以在NodeJS平台上运行,但是可以轻松地修改为在任何JavaScript引擎上运行。

-下面的旧答案-

Google发布了Closure Compiler,该文件似乎在这里和这里都可以看到生成的最小文件。

在此之前,各种选项如下

基本上,Packer在初始压缩时做得更好,但是如果要在在线发送之前对文件进行gzip处理(我们应该这样做),YUI Compressor的最终大小将最小。

测试是在jQuery代码btw上完成的。

  • 原始jQuery库62,885字节,gzip后为19,758字节
  • jQuery用JSMin缩小了36,391个字节,gzip之后是11,541个字节
  • jQuery用Packer压缩了21,557个字节,gzip之后是11,119个字节
  • jQuery使用YUI Compressor缩小了31,822字节,gzip后为10,818字节

@daniel james在注释Compressorrater中提到,它显示Packer在最佳压缩率方面领先于图表,因此我猜是ymmv

回答

我在Dojo项目中使用ShrinkSafe,这是个例外,因为它实际上使用了JavaScript解释器(Rhino)来处理代码中的符号并了解其范围等,这有助于确保代码在另一个出现时能够正常工作。最终,与使用regex进行压缩的许多压缩工具相反(可靠性不高)。

实际上,在我当前的Visual Studio解决方案的Web部署项目中,我实际上有一个MSBuild任务,该任务运行一个脚本,该脚本又会在部署之前通过ShrinkSafe运行该解决方案的所有JS文件,并且效果很好。

编辑:顺便说一下,"最佳"是有争议的,因为"最佳"的标准将根据项目的需求而变化。就我个人而言,我认为ShrinkSafe是一个很好的平衡点。对于某些认为最小尺寸==最佳的人来说,这将是不够的。

编辑:值得注意的是,YUI压缩器也使用Rhino。

回答

这是一个YUI压缩器脚本(Byuic),该脚本查找所有js并沿着路径移动css并压缩/(可选)对它们进行模糊处理。很高兴集成到构建过程中。

回答

如果我们使用Packer,则只需选择"缩小变量"选项,然后将生成的代码gzip压缩即可。仅当服务器无法发送压缩文件时,base62选项才适用。具有"收缩变量"的Packer可以更好地压缩YUI,但是如果我们在某处跳过了分号,则可能会引入错误。

base62基本上是一个穷人的gzip,这就是为什么gzip压缩base62版本的代码比gzip压缩var-ed代码可以提供更大的文件。

回答

bananascript.com曾经给我最好的结果。

回答

KJS压缩

http://opensource.seznam.cz/KJScompress/index.html

Kjscompress/csskompress is set of two
  applications (kjscompress a
  csscompress) to remove non-significant
  whitespaces and comments from files
  containing JavaScript and CSS. Both
  are command-line applications for
  GNU/Linux operating system.

回答

In searching silver bullet, found this
  question. For Ruby on Rails
  http://github.com/sstephenson/sprockets

回答

我最近发布了UglifyJS,这是一个用JavaScript编写的JavaScript压缩器(可在NodeJS Node.js平台上运行,但可以轻松修改为在任何JavaScript引擎上运行,因为它不需要任何Node.js内部组件) 。它比YUI Compressor和Google Closure都快很多,在我测试过的所有脚本上,它的压缩效果都比YUI好,并且比Closure更安全(知道处理" eval"或者" with")。

除了去除空格之外,UglifyJS还执行以下操作:

  • 更改局部变量名称(通常更改为单个字符)
  • 加入连续的var声明
  • 避免插入任何不需要的括号,括号和分号
  • 优化IF(在检测到不需要时删除" else",在可能的情况下将IF转换为&&,||或者?/:运算符,等等)。
  • 在可能的情况下将foo [" bar"]转换为foo.bar
  • 尽可能删除对象文字中键的引号
  • 当导致较小的代码时解析简单表达式(1 + 3 * 4 ==> 13)

PS:哦,它也可以"美化"。 ;-)

回答

精简后,Js Crush是一个很好的压缩器。