JavaScript 壓縮

摘要:JavaScript 壓縮

JavaScript 壓縮,這裡指的不是 gzip,是去掉註解、換行、把變數名稱改短以減少檔案大小的壓縮方式…常見的工具有 Yui compressor、Closure Compiler

要用 Closure Compiler除了把 compiler-latest抓下來之外還要裝 這個,然後在 cmd下這個指令:「java -jar compiler.jar --js=in1.js --js_output_file=out.js」,如果有需要,可以有多個 --js,ex: --js=in1.js --js=in2.js ....唔,一個一個打感覺是個笨方法,應該可以把目錄下的 .js檔自動列出來啊~~但是我不會,所以有興趣的再自己研究XD

剛剛遇到的問題,壓縮之後不能正常運作…直接看程式碼吧。

//如果這樣寫:
if (typeof data == 'string'){
	eval('data = ' + data);
}
//closure complier結果:
if(typeof g=="string"){eval("data = "+g)}
//data 這個變數名稱被改寫成 g
//=====
//改這樣寫:
if (typeof data == 'string'){
	data=eval('('+data+')');
}
//closure complier結果:
if(typeof g=="string"){g=eval("("+g+")")}
//這樣就對了

嗯…發現原因,但是我想不到怎麼跟寫出這 code的人解釋 囧a……因為變數名稱被改寫了,但是字串卻得原封不動的丟回來,所以壓縮出來的結果就錯了……相當糟糕的表達能力 orz

然後這段 code是要解析 json物件,除了 eval,還有更好的方式,看看這個吧:ejohn.org/blog/the-state-of-json/