现在已经出现了不少有自己特色的:
- JSMin
- Javascript compressor
- Packer
- Closure Compiler
- YUI Compressor
- Pretty Diff
- JavaScript Optimizer
- pack:tag
- Minify
- Lightweight
- CssMin
- jsmin-php
- MiniME
- ShrinkSafe
- Granule
- JAWR
- CombineAndMinify
- CrunchMe
有些太简单的、基于某主流思路仿写(但又未能超越原作的更新版本)的或者Bug太多的我就不列出了。比如用PHP实现的某几种,失败的时候往往比成功要多。(Xee:有时候你会发现压缩代码之后,程序运行不正常了,比较压缩这个东西不可能完美!但是我们又不能不用~~)
----------------------------------------------------------------------------------------??--------------------------------------------------------------------------------
Dean Edwards开发的javascript packer是用在jquery相关项目中最多的packer了。通过这个工具,js文件的大小至少能减少到原来的一半,也就是说压缩比在50%以上,而且可以防止js代码被抄袭,真可谓一举两得。
(Xee:但是注意它可能会压缩出错!就像我说的,没有哪个压缩工具能完美,使用小心就好,如我所知道的:Closure Compiler对语法的要求比较严格,会导致一些Hack技巧无法使用。有篇文章就提到:jquery用的是google的开源js压缩工具,Google Closure Compiler和YUI compressor 是目前最佳的js压缩方式。 Dean Edwards‘ packer 是不推荐使用的!!)
我们先来介绍一下什么是JavaScript Packer混淆。
packer现在是3.0。它是一个web工具,可以在线进行压缩。它的使用很简单:
- 进入网站
- 粘贴要压缩的代码
- 执行pack
它还有几个选项:Base62 encode和Shrink variables。如果这两个选项不选的话,只是去掉多余的空格,换行,注释之类的。如果选择Base62 encode基本上就不可读了。如果选择Shrink variables可以压缩变量,具体它是如何做的我不清楚,不过体积的确会变小。不过在我压缩jquery.jform.js时,在测试中发现原本应该是ajax的POST方式提交的结果变成了GET方式,太奇怪了。如果换成不压缩的版本就没有问题。因此定位是这个packer的问题。于是我没有选中Base62 encode,而只是选中了Shrink variables,发现在$.ajax的参数中,原本为type的给变成了typf,当我中选中Base62 encode,但没有选中Shrink variables后,一切正常。
所以我的第一个建议是:当运行出错时,去掉Shrink variables试试。
另外我的第二个建议是:每个函数后面一定要有分号(‘;‘),每个语句后面如果不是大括号括起来的,一定要有分号。不然在运行时会说是少分号,很麻烦。
这里讲了怎么能方便地把分号补全。http://javascriptcompressor.com/forums/p/19/55.aspx#55 这里推荐的办法是在压缩之前先把代码贴到http://www.jslint.com/ 去做检查,查出所有缺分号的地方,手动补上。
现在OpenbookPlatform中的许多js代码我都进行了压缩,甚至把一些常用的放到了一个full.js文件中,这样可以减少文件读取次数,从而提高效率。
Xee:多文件批量压缩:http://dean.edwards.name/download/中寻找wsh版本, WSH 版本可以从命令行操作!也就是自己写个脚本然后可以批量操作!强悍吧!!!!!
Xee:Dean Edwards其他一些作品工具中的cssQuery这个工具,有点意思,相比之下,我还是喜欢jQuery的选择方式。
----------------------------------------------------------------------------------------??--------------------------------------------------------------------------------
最后,有压缩工具怎么解压缩呢?
解压缩(格式化)地址: http://jsbeautifier.org/ & http://lzw.me/pages/demo/jquery_search_suggest_plugin/
<参考:你用哪种 JavaScript Minifier/Packer/Compressor,好用不? & 使用dean的javascript packer的一些体会 & 也谈谈js的压缩,jquery压缩>