原文出自:http://www.cnblogs.com/heimirror/archive/2010/06/04/1751304.html,谢谢!!
这两天想用pack后的javascript为朋友们整理出用于抢购的程序,于是想弄一个跟jQuery min包一样的pack方法,加快加载时间,当然主要是好奇。在上网转了一圈,全都是一模一样的抄袭文章,也分不出来哪个是原创,以后搜索引擎得有搜原创的能力,不然原作者太受打击了。
对于该问题还真没有合适的答案,给的链接是死链,国外的网站也都是无关痛痒的描述。从CSDN上下了一堆工具,没一个好使的。当然,最终我还是弄明白了,具体如下。
Javascript是脚本语言,如果弄的离谱,会让解释器认不出来,所以不论是加密还是压缩还是混淆,最后的结果还要让解析器理解。总结起来,原始的Javascript有如下变换,
- 加密:微软有一个控件,可以将javascript加密,加密后真的是一点都无法阅读,在运行的时候需要再用这个控件解密。加解密的过程是可逆的,所以有些基础的人还是可以破解的。此外,这个控件在浏览器里运行时会报安全警告,而且只适用于IE,所以用处不大。
- 加壳:有些工具可以将js文件打包成exe,在运行时类似于以cscript/wscript运行,这样的方法是在网页里行不通的。
- 去冗:将javascript中的注释、换行、没用的空字符都去掉,这样的做法没什么技术含量,如果没注释,用编辑器就可以做。
- 重整:利用javascript的eval函数以及正则表达式将源文件重整,这个过程也是可逆的,重整后的文件只能对付菜鸟,而且会影响加载效率。
- 压缩:这个是重点了,大家看一下jQuery的min包,主体部分除了经过去冗处理,函数内部的变量也被替换了,这样可以在不考虑阅读的情况下,最大程度减少文件长度。这个过程也是很有技术含量的,因为不能修改全局变量,否则压缩后的文件可能无法使用。具体实现方法在网上似乎传了很多,其实目前只有一个,就是 yuicompressor,我特意在jQuery的SVN上看了一下,在build目录里可以找到这个包,目前的版本是2.4.2。
所以,如果你想要压缩javascript,或跟我一样只是好奇的话,可以弄一个yuicompressor来玩玩,我特意用jQuery.js试了一下,处理过的文件和jQuery.min.js一模一样。