最佳JavaScript压缩器
什么是最好的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是一个很好的压缩器。