对待发布的项目进行测试时,发现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:\yuicompressor\yuicompressor-2.4.8.jar D:\my.js -o D:\my-min.js

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

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

 cd "%1"
for /f %%a in ('dir /A:-D /S /b *.js') do call:ProcessCompress: %%a
for /f %%a in ('dir /A:-D /S /b *.css') do call:ProcessCompress: %%a :ProcessCompress
IF NOT [%]==[] call:CompressFiles: %
GOTO:EOF :CompressFiles
java -jar D:\temp\js\yuicompressor-2.4..jar % -o %~d1%~p1%~n1-min%~x1
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的方法, % -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 扩充到找到的第一个完全合格的名称。如果环境变量未被定义,或者没有找到文件,此组合键会扩充空字符串

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

使用雅虎YUI Compressor压缩JS过程心得记录的更多相关文章

  1. YUI Compressor 压缩 JavaScript 原理-《转载》

    YUI Compressor 压缩 JavaScript 的内容包括: 移除注释 移除额外的空格 细微优化 标识符替换(Identifier Replacement) YUI Compressor包括 ...

  2. 【JS代码压缩】使用YUI Compressor对js文件进行压缩处理

    概述 在使用html5开发Hybird APP的时候,可能会引入大量的js包,另外对于一些核心的js文件,进行一些特殊的处理, 如压缩和加密就显得很重要了,YUI Compressor就是这样一个用于 ...

  3. YUI Compressor压缩失效的场景-eval和with

    一.官方文档的说明 in the face of evil features such as eval or with, the YUI Compressor takes a defensive ap ...

  4. Java & Mysql 餐饮管理系统 过程心得记录

    ------------------------------------------Have a Good Day~---------------------------------- 准备国赛和AC ...

  5. YUI Compressor JS和CSS压缩工具使用方式(使用前安装JDK)

    压缩测试: 选中 test.js, 执行右键菜单“Process with &YUICompressor”,会生成 test-min.js. 注意事项: 1. 需要安装 JDK >= 1 ...

  6. YUI Compressor是如何压缩JS代码的?

    YUI Compressor 压缩 JavaScript 的内容包括: 移除注释 移除额外的空格 细微优化 标识符替换(Identifier Replacement) YUI Compressor 包 ...

  7. 【转载】Yui.Compressor高性能ASP.NET开发:自动压缩CSS、JS

    在开发中编写的js.css发布的时候,往往需要进行压缩,以减少文件大小,减轻服务器的负担.这就得每次发版本的时候,对js.js进行压缩,然后再发布.有没有什么办法,让代码到了服务器上边,它自己进行压缩 ...

  8. C#Css/Js静态文件压缩--Yui.Compressor.Net

    一.Asp.Net 自带静态文件压缩工具包 Microsoft.AspNet.Web.Optimization http://www.nuget.org/packages/Microsoft.AspN ...

  9. Asp.Net使用Yahoo.Yui.Compressor.dll压缩Js|Css

    网上压缩css和js工具很多,但在我们的系统中总有特殊的地方.也许你会觉得用第三方的压缩工具很麻烦.我就遇到了这样问题,我不想在本地压缩,只想更新到服务器上去压缩,服务器压缩也不用备份之类的操作.于是 ...

随机推荐

  1. http 长连接 & 短连接

    1.意义 同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法. 2.优 较少的CPU和内存的使用 允许请求和应答的HTTP pipelining 降低网 ...

  2. Django使用富文本编辑器

    1.下载kindeditor 网址:http://kindeditor.net/demo.php2.解压到项目中 地址:\static\js\kindeditor-4.1.103.删除没用的文件 例如 ...

  3. 蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)

    你这是显卡驱动问题,我把蓝屏代码都给你,以后在出现蓝屏自己看看行了. 1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆错误分析:主要是由问题的驱动程序.有缺陷或不兼容的硬件与 ...

  4. c# 文件IO操作 StreamReader StreamWriter Split 使用

    StreamWriter(String,Boolean) 若要追加数据到该文件中,则为 true:若要覆盖该文件,则为 false. 如果指定的文件不存在,该参数无效,且构造函数将创建一个新文件. 例 ...

  5. 第二天----列表、深浅拷贝、元组、字符串、算数运算、字典、while

    列表 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 基本操作: 索引切片追加删除长度切片循环包含 创建.查看列表: 列表中的数字不要加引号,列表的索引从0开始: lis ...

  6. iptables原理及使用教程

    注意 修改iptables可能导致连接断开, 对于远程连接的用户, 需要在经过充分测试后在修改, 对于懒人可以设置一个crontab, 在你修改iptables的过程中每隔30分钟清空一次iptabl ...

  7. Spring Cloud之搭建动态Zuul网关路由转发

    传统方式将路由规则配置在配置文件中,如果路由规则发生了改变,需要重启服务器.这时候我们结合上节课内容整合SpringCloud Config分布式配置中心,实现动态路由规则. 将yml的内容粘贴到码云 ...

  8. HDU5371 Hotaru's problem

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  9. C++的异常捕获

    听课笔记: #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; void fun() { ;// ...

  10. 创建 CSS3 下拉菜单

    1. [图片] 菜单效果 2. [代码]menu.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ...