{转}编写高压缩比的JavaScript代码

网站发布前的JavaScript代码压缩是大部分Web前端工程师必做的一项工作,常用的JavaScript压缩工具有Dean Edwards写的JavaScript CompressorYUI CompressorClosure Compiler。本文中列出的编码原则是笔者在编程过程中总结出来的十条原则,这些原则适用于一般的JavaScript压缩工具,不适用于Closure Compiler的高级模式(由于Closure Compiler的高级模式过于智能,会用最优的方式重新组织代码结构)。

1.一次声明多个变量。
在代码块顶部统一声明所有的变量。使用一次var声明多个变量,减少代码使用var的次数。(Closure Complier会自动合并变量声明)

2.保存多次使用的字符串。
代码中有些字符串会反复多次使用,如css选择器、事件名称、常用css类,将这些字符串保存在变量中,减少在代码中使用明文字符串的次数。(Closure Complier压缩时会用明文字符串替换变量名,这反而使代码字节数增加了。)

3.缓存命名空间。
在使用引入了命名空间的Js框架(像YUI、dojo)编程时,命名空间一些的负面作用:一是增加了拼写的复杂度,二是增加了代码的字节长度。缓存层级较 深命名空间有利于提高编程效率和减少代码长度。另外该原则也适用于对象的属性、方法,如document.title、 window.location.href、Array.prototype.slice、navigator等。

4.缓存关键字。
压缩工具对JavaScript关键字都不会做处理,对一些常用的关键字(如undefined、true、false、window, document)缓存,有利于提高代码压缩率。

5.用&&替换if条件判断。
该原则牺牲了代码可读性,Closure Complier可以自动替换,酌情使用。

6.用三元运算符替换if else。
该原则牺牲了代码可读性,Closure Complier可以自动替换,酌情使用。

7.避免使用全局变量。
尽量避免使用全局变量,代码都应该封装在闭包内。除了Closure Complier的高级模式外,其他的压缩工具都不会修改全局变量。

8.用||为变量赋默认值。

9.使用数组和对象的字面量。

10.编写自己的通用函数。

http://blog.tugai.net/2010/06/12/high-compression-ratio-javascript/

posted @ 2011-03-06 14:41    Views(277)  Comments(0)    收藏  举报