UglifyJS初探
by
at 2011-03-26 00:56:51
original http://www.javaeye.com/topic/975786
jquery 1.5 代码压缩工具已经从GCL(Google Closure)切换到了UglifyJS,UglifyJS的压缩效果非常好,并且压缩后的代码是安全的。
下面是UglifyJS 与 YUI 、 GCL 间压缩结果对比。
Library
Orig. size
UglifyJS
YUI
GCL
DynarchLIB
636896
241441
246452 (+5011)
240439 (-1002) (buggy)
jQuery
163855
72006
79702 (+7696)
71858 (-148)
uglifyjs通过下面方式来达到代码高度压缩:
- foo[“bar”] ==> foo.bar
- 删除{}块
- var a = 10; var b = 20; ==> var a=10,b=20;
- 1 +2 * 3 ==> 7
- 连续的代码块会合并成一个
- 删除一些无法访问的代码
对于if语句uglifyjs 会做下面的优化
- if (foo) bar(); else baz(); ==> foo?bar():baz();
- if (!foo) bar(); else baz(); ==> foo?baz():bar();
- if (foo) bar(); ==> foo&&bar();
- if (!foo) bar(); ==> foo||bar();
- if (foo) return bar(); else return baz(); ==> return foo?bar():baz();
- if (foo) return bar(); else something(); ==> {if(foo)return bar();something()}
不同平台UglifyJS版本:
nodejs version: https://github.com/mishoo/UglifyJS
common Lisp version: http://github.com/mishoo/cl-uglify-js
java version: https://github.com/yuanyan/UglifyJS-java
<br><br>
作者: <a href="http://javamore.javaeye.com">javamore</a>
<br>
声明: 本文系JavaEye网站发布的原创文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
<br><br>
<span style="color:red">
<a href="http://www.javaeye.com/topic/975786" style="color:red">已有 <strong>0</strong> 人发表回复,猛击->><strong>这里</strong><<-参与讨论</a>
</span>
<br><br><br>
JavaEye推荐