热烈祝贺台州维博网络的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » AJAX编程 » 用Microsoft Ajax Minifier帮你的Javascript瘦身

用Microsoft Ajax Minifier帮你的Javascript瘦身

论坛链接
  • 用Microsoft Ajax Minifier帮你的Javascript瘦身
  • 发布时间:2009-10-29 11:03:14    浏览数:7391    发布者:tznktg    设置字体【   
摘要 前两天在Plurk上看到91哥在谈这个工具,一时兴起之下就稍为玩了一下,发现还蛮有趣的,以下介绍给大家参考看看。

从Web 2.0兴起后,使用者对于网页互动的需求愈来愈大,不仅要求使用界面美观,也希望操作功能的友善度上能与过去的Winform程式看齐,而为了达到更良好的操作效果,程式设计师不得不在网页设计上加入许多的新元素(又或者说广泛使用一些过去比较少用的技术),其中AJAX就是一个很热门且广为人知的技术架构,而众家软体大厂也陆续推出对应的AJAX Framework来协助我们进行开发,但AJAX除了带更良好的人机操作外,也带来了大量的Javascript,随着我们使用的AJAX功能愈来愈多,网页需要reference的Javascript file数目也愈来愈多,体积也愈来愈大,而这些改变都将反应在使用者进行网页下载与Javascript执行时的效率。

若你使用了ASP.NET AJAX,基本的Javascript体积约200-300KB,若你使用了AjaxPro,则基本的Javascript约为80KB,Javascript虽然都会cache,但对使用者来说,第一次操作时的体验多少都会受到影响。

因为网页流量太大,Javascript太肥等问题,实际上微软这边都有提供了一些还不错的方案,将以下叁项做搭配,就可以获得很不错的效果:

IIS网页压缩:将IIS静态档案(html、CSS、JS…)、动态档案(asp、aspx…)进行压缩,可大大减少网页流量,压缩比设到最高时,大约可以将流量压到剩30%左右。

DOLOTO指令码分析:负责分析执行的script,只下载必要的script内容到client,并随着client端的需要动态到server上去取得必要的部分,可减少不必要的流量。

AJAX Minifier:Javascript瘦身工具,可以将Javascript去除不必要的字元,包含空白、换行、符号与区域变数的名称等,可直接的让我们的JS file变成一个全新的runtime版本。

本篇主要针对AJAX Minifier来做说明。

AJAX Minifier

这个工具是随着Microsoft Ajax Library Preview 6一起被release出来的,可以到这个地方下载:http://aspnet.codeplex.com/Relea ... spx?ReleaseId=34488



下载完并安装后我们可以在程式集中看到Microsoft Ajax Minifier,第一次使用建议你看一下Microsoft Ajax Minifier Documentation。



安装上十分的简单,不过使用时可就要稍微留意了,这个工具目前仍算阳春,只提供了Command-line模式的操作,还没有GUI的使用介面,这也是前头我建议各位先看看Documentation的塬因所在了,下方我们会简单带一下如何透过Command-line与MSBuild来使用这项好工具。

Introduction

不管使用任何工具,如果有Documentation,请务必观看,在Introduction中我们可以看到这个工具的处理分成四个等级:

Level 1:去除空白(whitespaces)与註解(comments)

Level 2:去除不需要的分号(semicolons)与大括号(curly-braces),以下简称Normal-Crunching

Level 3:变更区域变数名称,将名称变更为简单的名称,以下简称Hyper-Crunching

Level 4:去除不会执行到的script内容

以上四个等级,Level 1~3可直接选择Level 3来使用,但若要使用Level 4的话,建议你确认一下该段script是否真的不会执行到,以免衍生其他问题。

Command-line模式

首先我们开启Microsoft Ajax Minifier Command Prompt:



根据文件说明,我们有以下几个较常用的指令可以使用:

-O:指定Minify后的档案档名,预设产出的等级为Level 2的结果(Normal-Crunching)。

-H:进行Javascript的瘦身,预设产出等级为Level 3的结果(Hyper-Crunching)。

-A:将分析过程的内容显示在Command-line画面上

接下来我们简单的进行使用吧,首先我找了一个hash.js的档案,其塬始内容为大致如下,有完整的註解与Function定义,这对开发人员很有用,但是对runtime的使用者来说并没有意义:



接着开始来试验一下吧,先进行以下两个指令Normal-Crunching与Hyper-Crunching:

Normal-Crunching:ajaxmin C:\inetpub\wwwroot\WebSite2\hash.js –o C:\inetpub\wwwroot\WebSite2\ hash _mini_O.js

将hash.js档透过-O(Normal-Crunching)的指令转成hash_mini_O.js档:



按下Enter后显示Crunching file ‘hash.js’…Done.



以下则是转完后的结果,档案大小从5K-->2K,字元数从3891-->1699:



Hyper-Crunching:ajaxmin –a -h C:\inetpub\wwwroot\WebSite2\hash.js –o C:\inetpub\wwwroot\WebSite2\ hash _mini_A.js



按下Enter后它会将分析的结果印在Command-line的画面上,这是因为我们使用了-a的指令:



以下是产出的档案,乍看之下似乎差别不大,但这一份因为我们使用了-h(Hyper-Crunching)的指令,所以会发现一些区域变数被改名成比较简单的命名,例如:var exists-->var a,所以这份档案的大小虽然还是2K,但是其位元数为1531,比之前的1669更少:



由于这个js档比较小,所以整个效果并没有让人感到特别惊人(5K-->2K),所以下面我们直接拿jQuery的js档来试验吧:



jquery1.3.1版,大小为115K,经过-O的指令后变为69K,经过-H的指令后变为53K,效果之好真的非常正点。

MSBuild模式

讲完Command-line模式后我们继续来说明MSBuild模式吧,透过Command-line模式多少还是会让人感到有些绑手绑脚的,最好可以在佈署时就自动帮我们做掉就最好啰。

当我们装好Minifier后,在这Program Files/MSBuild/Microsoft/MicrosoftAjax的路径下可以找到一个AjaxMin.tasks档案,这是一个MSBuild专用的task档案,在我们专案建置时会唿叫这个task来进行Minifier的唿叫:



开启我们的Web专案档(*.csproj、*.vbproj),并在</Project>的结尾符号前加上这一段:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="AfterBuild">
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
</ItemGroup>
<AjaxMin SourceFiles="@(JS)" SourceExtensionPattern="\.js$" TargetExtension=".min.js" />
</Target>





以上的设定是告知专案编译时要唿叫ajaxmin.tasks,主要进行的工作是找出目录下所有的*.js档,进行完Minify后将名称命名为*.min.js,做完以上设定后我们再开启我们的专案,这时候可能会出现以下的画面,请选择『以一般方式载入专案』,并按下确定:



接着我们在专案中随便加入几个js档,如下:



接着请依照一般的使用模式,按下建置,这时候到我们专案的目录下就可以看到以下的结果啰,不过这些档案并不会自动帮你加入到专案中,这个设计也不错,因为毕竟这两份js一份是在design time,另一份是run time使用,不直接被加入专案是合理的:



结语

这个工具的使用大致如以上所述,希望对各位有帮助。
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理