Closure-Compiler 主頁:https://code.google.com/p/closure-compiler/
或者:https://github.com/google/closure-compiler
文檔:https://developers.google.com/closure/compiler/?hl=zh-CN
或者:https://github.com/google/closure-compiler/wiki
壓縮js可以節省客戶單下載時間,就拿V6的Tool.js來說吧,壓縮前69.5KB,壓縮后31.8 KB,如果其中GZIP壓縮的話那么客戶端下載的文件將會更小了。
下載compiler.jar(http://dl.google.com/closure-compiler/compiler-latest.zip)
下載后,在命令行中運行:java -jar compiler –help,我們來來看一下運行壓縮工具都需要哪些參數:
1.–charset :指定輸入輸出文件的字符集,缺省預設UTF-8作為輸入文件的字符集,US_ASCII做為輸出文件的字符集。
2.–debug:開啟調試選項
3.–help:輸出幫助信息
4.–version:打印版本信息
5.–js:javascript文件名,可以指定多個
6.–js_output_file:主要輸出文件,如果沒有指定,壓縮后的文件將用標准輸出輸出
7.–compilation_level[WHITESPACE_ONLY | SIMPLE_OPTIMIZATIONS |
ADVANCED_OPTIMIZATIONS]:本壓縮工具(也可稱之為編譯器)的優化效果可以分為三個等級。
A.WHITESPACE_ONLY,該等級的優化將移除代碼中的注釋,回車符,不必要的分號和空格,輸出的Javascript等同於原有的Javascript。
B.SIMPLE_OPTIMIZATIONS,該等級在A級的基礎上,還對表達式和函數進行優化,包括重命名函數的局部變量和參數,縮短他們的名稱。由於該等級重命名的變量都是作用域內(函數內),所與不會影響到優化的Javascript代碼和其他的代碼。該等級為壓縮優化的缺省等級。
C.ADVANCED_OPTIMIZATIONS,該等級在B級的基礎上,進一步在全局范圍里進行轉化壓縮,是三個等級中最高的壓縮。在使用高級壓縮時,編譯器對你的代碼做了很多的假設,如果你的代碼不能滿足這些架設,壓縮后的代碼將不能正常運行。C等級將從三個方面來壓縮代碼: i.more aggressive renaming(更多的重命名)除了重命名函數的局部變量和參數,還重命名全局變量,函數名,和屬性。
ii.dead code removal(移除無用的代碼)移除沒有被調用的代碼。
iii.global inlining 用函數體的內容代替函數調用。
Closure Compiler使用的命令行代碼如下:
java -jar compiler.jar –js Tool.js –js_output_file Tool-compiled.js