2008-04-18

壓縮javascript

Packer
http://dean.edwards.name/packer/

YUI Compressor
http://developer.yahoo.com/yui/compressor/
(還可壓CSS)

說到javascript的壓縮,如果可以的話,從server side用gzip壓縮是最好的選擇(設定apache、透過php等都可做到),可是有時候放這些檔案的地方不提供這些功能的時候,就可以用YUI Compressor這類的程式來減少javascript的大小,原理不外乎就是把註解、斷行、空白刪掉,將local變數的名稱用一兩個字的英文數字取代。這時候有沒有習慣使用區域變數可是會影響壓縮出來的大小。

Packer
要取代區域變數名稱記得勾選Shrink variables,除了上述的壓縮方式,他還支援使用Base62 encode +eval這個方法來壓縮。

YUI Compressor
java寫的,除了javascript還可以壓CSS,因為開發者認為eval的方法很不好,所以並沒有支援。使用方式網頁或readme寫的很清楚。他是以命令列的方式執行,所以如果要一次轉一堆東西的話會比較方便(他自己沒提供,我是說自己寫個script)。要注意的是編碼問題,他預設是偵測你系統上的編碼來辨識輸入的檔案,檔案裡面全是英文就沒差,像是有用到utf-8的非英文字他就會跳錯誤給你看,所以記得指定charset,例如:
java -jar yuicompressor-2.3.4.jar --charset UTF-8 ui.js -o ui.min.js

之前用Packer 有發生過轉完javascript執行就跳錯誤的問題,YUI Compressor目前還沒遇到。

沒有留言: