用yuicompressor和Ant压缩Ext的CSS文件
yuicompressor是YUI的Javascript和CSS压缩工具,下载地址:
http://developer.yahoo.com/yui/compressor/
使用Ext之后,只能导入ext-all.css或者一个个的导入需要的css(太麻烦),如果用到aero等风格,还得导入xtheme- aero.css,总下载大小为ext-all.css+xtheme-aero.css=58k+16k=76k,如果一个个导入仅用到的css,又要 多次http请求,本来Ext几百K的大小就让人担忧性能,再加上76k的css文件,浏览器肯定载入更慢了。。
Ext自带的css源文件,除了ext-all.css之外都不是压缩的。考虑用yuicompressor来压缩用到的css文件,并用Ant将压缩过 的css文件合并为一个文件。这里所说的方法同样可以用于javascript的压缩,yuicompressor支持对javascrip和css文件 的压缩。
<project name="..." default="..." basedir=".">
...
<!-- yuicompressor.jar的引用,使用最新的版本2.2.5 -->
<property name="yuicompressor" value="tools/yuicompressor-2.2.5.jar" />
...
<!-- 压缩并连结用到的ext的css文件 -->
<target name="compress-ext-css">
<!--Ext CSS样式目录-->
<property name="css.ext" value="WebRoot/css/ext" />
<!-- 删除之前生成的已压缩css文件 -->
<delete>
<fileset dir="${css.ext}">
<include name="*-m.css" />
<include name="ext-all.css" />
</fileset>
</delete>
<!-- 使用java命令调用yuicompressor.jar,就是用java命令执行yuicomprossor.jar -->
<!-- parallel="false":对fileset中的每个文件都执行一次executable参数的命令 -->
<!-- dest="${css.ext}":命令执行目录 -->
<apply executable="java" parallel="false" verbose="true" dest="${css.ext}">
<!-- 要压缩的css文件 -->
<fileset dir="${css.ext}">
<include name="fonts-min.css" />
<include name="reset-min.css" />
<include name="core.css" />
<include name="tree.css" />
<include name="tabs.css" />
<include name="toolbar.css" />
<include name="button.css" />
<include name="basic-dialog.css" />
<include name="layout.css" />
<include name="xtheme-aero.css" />
</fileset>
<arg line="-jar" />
<arg path="${yuicompressor}" />
<arg value="-o" />
<targetfile />
<!-- 每执行一次命令的输出文件为*-m.css,比如要压缩文件为tabs.css,则生成的压缩文件为tabs-m.css -->
<mapper type="glob" from="*.css" to="*-m.css" />
</apply>
<!-- 以上动作相当于执行下列命令:
java -jar yuicompressor-2.2.5.jar -o fonts-min-m.css fonts.css
java -jar yuicompressor-2.2.5.jar -o reset-min-m.css reset.css
java -jar yuicompressor-2.2.5.jar -o core-m.css core.css
java -jar yuicompressor-2.2.5.jar -o tree-m.css tree.css
java -jar yuicompressor-2.2.5.jar -o tabs-m.css tabs.css
java -jar yuicompressor-2.2.5.jar -o toolbar-m.css toolbar.css
java -jar yuicompressor-2.2.5.jar -o basic-dialog-m.css basic-dialog.css
java -jar yuicompressor-2.2.5.jar -o layout-m.css layout.css
java -jar yuicompressor-2.2.5.jar -o xtheme-aero-m.css xtheme-aero.css
-->
<!-- 用Ant的concat动作将生成的压缩css文件连结成一个文件 -->
<!-- fixlastline="true":每个压缩文件在最后生成的文件中用换行来分割,即每个*-m.css在生成的ex-all.css中占一行。如果 用concat连结压缩的js文件,这个参数一定要加上,否则连结后的js文件可能运行错误 -->
<concat destfile="${css.ext}/ext-all.css" fixlastline="true">
<fileset dir="${css.ext}">
<include name="*-m.css" />
</fileset>
</concat>
</target>
</project>