zoukankan      html  css  js  c++  java
  • 使用雅虎YUI Compressor压缩JS过程心得记录

      对待发布的项目进行测试时,发现js下载量比较大,从jquery的min版想到了压缩项目中的js文件.很简单的google之(在此,强调一下google的重要性),搜到一个叫做YUI Compressor,是雅虎提供的一个可以压缩js和css的工具,早就对雅虎的css设计有所耳闻,今天先体验一下这个压缩工具,在官网找了好半天才找到这传说中jar文件,版本是2.4.2,我比较喜欢新版本的,继续google之.找到一个最新的yuicompressor-2.4.8.jar和源码文件,如果各位童鞋找不到,可以留言,小弟可以传给大家.

      网上找了一个使用yuicompressor的说明《使用YUI Compressor压缩JS和Css,批处理,右键,注册表,打包》,写的很不错,不过有一些细节上面没有描述的很清楚.根据个人的理解来看.现以js文件举例.compressor是一个jar文件,那么就需要先配置好java的环境变量,各位学习java的童鞋,不会的可以去面壁google.其他语言的童鞋可以google之,非常简单.

      环境变量配置好后,那么就可以使用cmd命令执行,命令很简单: java -jar D:yuicompressoryuicompressor-2.4.8.jar D:my.js -o D:my-min.js

    以上是最简单的方式,使用了一些默认参数,如果需要设置类型和编码,可以参考官网,也很简单.

      在此,小弟说一下自己的需求,项目中js文件比较多,所在目录也很多,那么手动一个一个的压缩,无疑不是程序员的首选.既然有cmd,那么批处理就自然而然的想出来.批处理?小弟我也不会.不会就去学呗.根据上面介绍的文章,我写好了自己的bat批处理命令.

     1 cd "%1"
     2 for /f %%a in ('dir /A:-D /S /b *.js') do call:ProcessCompress: %%a
     3 for /f %%a in ('dir /A:-D /S /b *.css') do call:ProcessCompress: %%a
     4 
     5 :ProcessCompress
     6 IF NOT [%1]==[] call:CompressFiles: %1
     7 GOTO:EOF
     8 
     9 :CompressFiles
    10 java -jar D:	empjsyuicompressor-2.4.8.jar %1 -o %~d1%~p1%~n1-min%~x1
    11 GOTO:EOF

    现在一一介绍一下,有一些我没有细致的去查,不过理解的应该相差不大.

    第一行: cd "%1"-------(不是很清楚,大致是在执行该bat文件时,后面需要带个路径参数,即从哪个目录下开始遍历)

    第二行:for-------就是for循环咯||

        /f-------(应该是对文件进行搜索的意思吧)

       %%a-------这个应该是定义了一个每次遍历的参数,就跟java中的for循环 int i=0.应该差不多

         in-------不讲了,一切尽在不言中

       dir需要好好解释一下,以下是我从《使用CMD实现批量重命名[转]》中拷贝的

    先解释 "dir /A:-D /S /B",dir(ectory)命令的作用是
    引用:
    Displays a list of files and subdirectories in a directory.
    DIR [drive:][path][filename] [/A[[:]attributes]] [/b] [/C] [/D] [/L] [/N]
    [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
    /A(ttribute):D(irectory) 表示只显示属性是目录的项,D前面加个减号-, 表示非,因此/A:-D就是显示所有非目录的项。
    /S(ubdirectories), 表示所有子目录和子目录下的文件也都要显示。
    /B(are), 表示显示最简单赤裸的信息就可以了,其它冗余信息都不显示。对于dir命令来说,就是只显示长文件名。
    好了,说了这么多,其实很简单,dir /A:-D /S /B 的作用就是显示某目录及其子目录下的所有文件列表。可以打开CMD窗口,亲身体验一下(注意别在C盘根目录用这个命令呵,文件太多,会刷半天屏的。若不幸使用,请使劲摁Ctrl + C退出)

        do call------我想就应该调用其他方法了吧.顺便把参数传过去.

    第五到七行不太懂,略过.

    第十行:前面是调用YUICompressor的方法, %1 -o %~d1%~p1%~n1-min%~x1需要重点说一下,我的目的是是将my.js转成my-min.js

    我使用神奇的google到了这篇文章《如何写批处理文件》上面讲到:

      选项语法:

      ~I - 删除任何引号("),扩充 %I
      %~fI - 将 %I 扩充到一个完全合格的路径名
      %~dI - 仅将 %I 扩充到一个驱动器号
      %~pI - 仅将 %I 扩充到一个路径
      %~nI - 仅将 %I 扩充到一个文件名
      %~xI - 仅将 %I 扩充到一个文件扩展名
      %~sI - 扩充的路径只含有短名
      %~aI - 将 %I 扩充到文件的文件属性
      %~tI - 将 %I 扩充到文件的日期/时间
      %~zI - 将 %I 扩充到文件的大小
      %~$PATH:I - 查找列在路径环境变量的目录,并将 %I 扩充到找到的第一个完全合格的名称。如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串

    好了,各位,我的任务完成了,相信大家可以看懂了.

  • 相关阅读:
    书列君荐书|《福尔摩斯探案大全集》.(英)阿瑟.柯南道尔.扫描版
    anaconda同时集成Python2 和 Python3
    python 使用sqlite,ConfigParser实例
    python 爬虫爬取历年双色球开奖信息
    关于python 爬虫遇到的反盗链
    CentOS7搭建Docker私有仓库----Docker
    Ansible + shell 实现部署fastdfs+nginx 实现图片服务器并提供动态缩放功能;
    python+fastdfs+nginx实现打包下载功能
    监控生产服务器内存使用前十
    python操作MySQL--实例
  • 原文地址:https://www.cnblogs.com/geyifan/p/3196986.html
Copyright © 2011-2022 走看看