用yuicompressor和Ant压缩Ext的CSS文件

谷梁博易
2023-12-01
用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>


 
 类似资料: