你使用什么工具来压缩和最小化JavaScript库?
你使用什么工具来压缩和最小化JavaScript库?
我长期使用YUI压缩器,并且一直没有遇到什么问题,但最近我开始使用Google Closure Compiler并且获得了一些成功。 我目前对此的印象:
我已经切换到使用Google Closure Compiler的简单“编译”模式,因为它通常比YUI压缩器表现更好。 尽管我使用Google Closure Compiler的时间比使用YUI压缩器的时间短得多,但从目前我所看到的情况来看,我会推荐它。
另外一个我尚未尝试过但听起来很有前途的是Mihai Bazon的UglifyJS。
我使用YUI压缩器。似乎做得很好!
我完全没有轻视 JavaScript:gzip 压缩对我来说已经足够好了,并且还有额外的好处是错误信息仍然能够很有用。
我也使用YUI Compressor。我的项目中有一个类似这样的Ant任务:
<!--
YUI Compressor tasks
http://www.julienlecomte.net/yuicompressor/README
-->
<property name="yuicompressor.jar"
value="C:/devlibs/yuicompressor-2.2.4/build/yuicompressor-2.2.4.jar"/>
<target name="js.compress">
<!-- Create min directory under js direcrtory if it doesnt exist -->
<mkdir dir="${js-directory}/min" />
<apply verbose="true" executable="java" parallel="false" failonerror="true">
<fileset dir="${js-directory}" includes="*.js"/>
<arg line="-jar"/>
<arg path="${yuicompressor.jar}"/>
<srcfile/>
<arg line="-o"/>
<mapper type="glob" from="*.js" to="${js-directory}/min/*-min.js"/>
<targetfile/>
</apply>
</target>
UglifyJS是一款新的工具。
相比YUI Compressor,UglifyJS压缩效果更好,而且和Google Closure Compiler差不多。例如,使用Google Closure Compiler压缩后的jQuery版本比使用UglifyJS压缩后的版本仅少403字节 - 令人印象深刻!而且,UglifyJS运行速度也是最快的,比Closure快6秒以上!
此外,UglifyJS生成的代码比Closure更安全。例如,Closure不知道如何处理eval或with{},它只会记录一个错误并继续重命名变量。这显然会导致代码出错。但UglifyJS没有这个问题。
更多信息请参见: http://badassjs.com/post/971960912/uglifyjs-a-fast-new-javascript-compressor-for-node-js
微软提供了一个解决方案,您可以将其集成到Visual Studio中,在构建项目时自动压缩文件。
安装方法:
从以下链接下载msi文件:http://aspnet.codeplex.com/releases/view/40584
完成后,您可能需要重新启动计算机。
使用方法:
编辑 .csproj 文件,在文件末尾添加以下内容(但在</Project>
标记之前):
<Import Project="$(MSBuildExtensionsPath)\Microsoft\MicrosoftAjax\ajaxmin.tasks" />
<Target Name="AfterBuild">
<ItemGroup>
<JS Include="**\*.js" Exclude="**\*.min.js;Scripts\*.js" />
<CSS Include="**\*.css" Exclude="**\*.min.css" />
</ItemGroup>
<AjaxMin
JsSourceFiles="@(JS)"
JsSourceExtensionPattern="\.js$"
JsTargetExtension=".min.js"
CssSourceFiles="@(CSS)"
CssSourceExtensionPattern="\.css$"
CssTargetExtension=".min.css"/>
</Target>
现在,当您构建项目时,所有不以.min.js、.min.css结尾的CSS和js文件都将被压缩(请参见“排除”属性以排除其他文件不进行压缩)。
我以前尝试过使用YUI压缩器,但是它给了我错误信息。
我建议使用JSMIN来压缩你的javascript: