Ajax除了自己要寫(xiě)js代碼外,也免不了要使用其它第三方庫(kù)。當(dāng)你在為提高了用戶體驗(yàn),做出了很喧的效果而欣喜的時(shí)候,是否想過(guò)優(yōu)化一下JS的效率。
js的速度分為兩種,下載速度和執(zhí)行速度。今天就先來(lái)說(shuō)說(shuō)下載速度。要想js的下載速度快,就需要盡量減小js文件的大小。這里我們可以使用一個(gè)工具ESC(ECMAScript cruncher)來(lái)幫我們完成這個(gè)工作,不過(guò)這個(gè)工具只能在Windows下使用。
到http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下載ESC.zip,解壓后看看它的幫助文檔。很簡(jiǎn)單。
壓縮級(jí)別分為5種,從0到4
Level 0 :: No compression
Level 1 :: Comment removal
Level 2 :: Whitespace removal
Level 3 :: Newline removal
Level 4 :: Variable substitution
在WINDOWS命令行下執(zhí)行
cscript ESC.wsf -ow menu2.js menu.js將會(huì)把menu.js按照級(jí)別2來(lái)壓縮(默認(rèn)級(jí)別為2)為menu2.js
cscript ESC.wsf -l 3 -ow menu3.js menu.js將會(huì)把menu.js按照級(jí)別3來(lái)壓縮為menu3.js
需要注意的是,級(jí)別4會(huì)把變量名修改,如果你的js中用到了全局變量或者類的話,就不能使用該級(jí)別了,否則其它使用你的js的文件可能會(huì)無(wú)法正常運(yùn)行。
試了一下,把yui的menu.js壓縮了一下,對(duì)應(yīng)的級(jí)別和壓縮率分別如下:
級(jí)別1:壓縮率44.41%
級(jí)別2:壓縮率62.82%
級(jí)別1:壓縮率64.93%
原來(lái)130多K的文件壓縮后也就40多K,看來(lái)還是挺有用處的。
另外還有一個(gè)小工具jsmin也可以壓縮,不過(guò)沒(méi)有ESC的level選項(xiàng),看了一下好像壓縮效果類似于ESC的level3.濟(jì)南大學(xué)的一些老師寫(xiě)了個(gè)jsmin的圖形界面程序JsMinGUI,使用起來(lái)更加方便。:-)
Dojo項(xiàng)目組也提供了一個(gè)工具,shrinksafe可以通過(guò)http://alex.dojotoolkit.org/shrinksafe/在線的上傳要壓縮的文件,處理完畢后可以保存到本地,另外shrinksafe還提供了一個(gè)本地運(yùn)行的版本,需要jre1.4的支持。
ps:對(duì)于一些壓縮的代碼,在閱讀時(shí)可以用JavaScript Code Improver來(lái)進(jìn)行格式化。看看它主頁(yè)上的一個(gè)例子:
原來(lái)的代碼:
<script language="JavaScript">var i=0,s="",k=0;function foo(){for(j=0;j<10;j++){for(i=0;i<10;i++){s="string1";k=Math.floor(Math.random()*10);}for(i=20;i>9;i--){s="string2";k=i;}}}</script>
格式化后:
<script language="JavaScript">
var i = 0, s = "", k = 0;
function foo()
{
for(j = 0; j < 10; j++)
{
for(i = 0; i < 10; i++)
{
s = "string1";
k = Math.floor( Math.random()*10 );
}
for(i = 20; i > 9; i--)
{
s = "string2";
k = i;
}
}
}
</script>