工作中关于 使用YUICompressor进行JS压缩 的问题小节

       由于我们公司的项目在自己开发图形控件,所以每次打开页面时,会有好多的JS文件加载,造成打开一个页面可能要花上6.7秒的亚子,所以领导发话,让我这个后台小白来整一下这些JS文件,把他们压缩合并成一个min.js.(能学到新知识,很开心)

       经过我的潜心学习,找到了YUICompressor这个工具,网上好像大部分人都是用这个工具,附上下载链接:https://github.com/yui/yuicompressor/releases  目前最新版的是2.4.8的版本

       

       可以看出这是一个用java编写的小工具, 可以直接在CMD中使用
工作中关于 使用YUICompressor进行JS压缩 的问题小节_第1张图片

       直接使用java -jar 工具包的安装路径 来查看该jar包执行所需参数, 例子如下:

       java -jar E:/yuicompressor-2.4.8.jar --type js --charset utf-8 E:\all.js > E:\all.min.js

注意:这里会出现一个异常,xxxx is need JDK1.7, but have 1.8, 这个并不是说该工具只能在JDK1.7环境下运行, 这个工具在1.7以上环境都可以运行, 抛出这个异常的原因是在环境变量中的PATH中只添加了JDK的路径,未添加JRE的路径,添加后即可解决.

       看说明跟网上说使用 -o 来指定压缩文件的生成位置, 但是我用-o不好使, 用>就没问题,这个根据实际情况去使用吧,不多研究了,但是这个只能单个文件压缩,而且是手动执行,不易用,所以就可以用java写一个Util,来自动生成cmd命令去批量执行压缩.这个Util主要就是拼这句命令的文件路径,然后使用Java中的Runtime类执行cmd命令

工作中关于 使用YUICompressor进行JS压缩 的问题小节_第2张图片

       注意:这里在使用Runtime来执行cmd命令时,需要在命令头部添加"cmd /c "这段来标识这个是cmd命令.

       这样就可以批量压缩JS了,如果需要合并压缩,可以使用文件流将所有文件读取写入一个临时文件中,进行压缩.在压缩过程中还有一些需要注意的,如:
       1.JS文件不可以使用ES6语法, 如果使用了需要先将ES6在线转换成ES5再进行压缩,
       2.JS方法或变量定义时,不可以使用char等关键字作为名称,虽然运行不会出错,但是压缩会报错(可以使用http://tool.oschina.net/jscompress/ 这个在线工具排错,也是基于YUI实现的)

 

你可能感兴趣的:(工作中关于 使用YUICompressor进行JS压缩 的问题小节)