Ajax除了自己要写js代码外,也免不了要用其它第三方库。当你在为提高了用户体验Q做Z很喧的效果而欣喜的时候,是否惌优化一下JS的效率?/p>
js的速度分ؓ两种Q下载速度和执行速度。今天就先来说说下蝲速度。要想js的下载速度快,需要尽量减js文g的大。这里我们可以用一个工具ESC(ECMAScript cruncher)来帮我们完成q个工作Q不q这个工具只能在Windows下用?/p>
?a >http://www.saltstorm.net/depo/esc/introduction.wbm?pod=js下蝲ESC.zip,解压后看看它的帮助文。很单?/p>
压羃U别分ؓ5U,??
Level 0 :: No compression
Level 1 :: Comment removal
Level 2 :: Whitespace removal
Level 3 :: Newline removal
Level 4 :: Variable substitution
在WINDOWS命o行下执行
cscript ESC.wsf -ow menu2.js menu.js会把menu.js按照U别2来压~(默认U别?Qؓmenu2.js
cscript ESC.wsf -l 3 -ow menu3.js menu.js会把menu.js按照U别3来压~ؓmenu3.js
需要注意的是,U别4会把变量名修改,如果你的js中用C全局变量或者类的话Q就不能使用该别了Q否则其它用你的js的文件可能会无法正常q行?/p>
试了一下,把yui的menu.js压羃了一下,对应的别和压羃率分别如下:
U别1:压羃?4.41%
U别2:压羃?2.82%
U别1:压羃?4.93%
原来130多K的文件压~后也就40多KQ看来还是挺有用处的?/p>
另外q有一个小工具jsmin也可以压~,不过没有ESC的level选项Q看了一下好像压~效果类gESC的level3.南大学的一些老师写了个jsmin的图形界面程?a >JsMinGUI,使用h更加方便。:Q)
Dojo目l也提供了一个工?shrinksafe可以通过http://alex.dojotoolkit.org/shrinksafe/在线的上传要压羃的文Ӟ处理完毕后可以保存到本地Q另外shrinksafeq提供了一个本地运行的版本Q需要jre1.4的支持?/p>
ps:对于一些压~的代码Q在阅读时可以用JavaScript Code Improver来进行格式化。看看它主页上的一个例子:
原来的代码:
<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>
格式化后Q?/p>
<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>

]]>