本文属于《高性能web前端优化指南》系列文章。
要想文件更快地下载完成,最直接的办法就是减小文件的体积,也就是把体积“压缩”了,对于javascript文件同样如此。
javascript文件与CSS文件类似,但他们在缩减体积方面差别很大。
对CSS进行压缩,可能能缩小的体积微乎其微,因为css中的选择器是万万不可更改的,但javascript不一样,JS中只需要保留可供调用的变量名字不变,其余的变量都可随意命名。
比如压缩版的jQuery,就是个很好的例子。
javascript文件压缩的原理
第一个当然就是去掉注释了。
另外就是跟CSS压缩相同的去掉换行符,空格什么的。
JAVASCRIPT中有几种变量形式,如变量,函数名,函数的参数等,通常我们在手写JS代码的时候,为了便于理解,我们都会给这些变量名以直观易懂的字符串,如:var title=”javascript”;这个习惯是值得推崇的。
但是,这些变量对于用户理解有帮助,对于计算机却没什么影响,如果我们把前面的句子变成:var a=”javascript”;对电脑来讲是一样的。
通常深度压缩JS都必须要做的一步就是尽量地缩短变量名,因为一份体积巨大的JS代码,其中的变量名会占去不少空间。
26个单字母,几乎就可以把一个函数中所有的参数都写完,所以我们经常在压缩版的JS代码中发现a,b,c,d之类的连续变量。
另外,Javascript有个特性就是不同作用域的变量名可以任意重复,所以此函数中有a,b,c,d,其他函数也可以有。这样短又大量重复的变量可以让人索云里雾里不知所云,也变相的起到了加密JS代码的作用.
压缩javascript必须要注意的
原理就在这儿了,但开始压缩的时候必须要做到以下几点:
- 压缩前的代码格式要标准。因为去掉换行与空格时,所有语句就变成一行了,如果你的代码有瑕疵(比如某行少了个分号),那就会导致整个文件报错。当然,现在有的压缩工具已经比较智能了。
- 备份原文件
- 压缩很可能不会一次成功,一般要多试,多改
原理很简单——当然,其中也有复杂的技巧,但原理基本就是如此,但我们如果手动进行压缩工作无疑烦恼大大的,所以就有前辈开发了专门的工具来进行这个工作。
javascript的压缩工具
这说起来就多了去了。下面简单列几个出名的:
雅虎的http://refresh-sf.com/yui/ YUI Compressor 在线的。
Google的在线版本 Javascript Closure Compiler,也有下载版点此下载 Javascript Closure Compiler
其余的可以自行google搜索,因为我也没压缩过几次,所以只有试试了。