UglifyJS初探

2011-03-26 08:56

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> 人发表回复,猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br><br><br>
    

    JavaEye推荐