java 压缩js css_Java使用YUI Compressor压缩JS/CSS文件

java 压缩js css_Java使用YUI Compressor压缩JS/CSS文件首先介绍一下YUICompressor,它是一个用来压缩JS和CSS文件的工具,采用Java开发。JavaScript和CSS缩小的目标是始终保持代码的操作质量,同时减少其整体字节占用,YUICompressor设计为100%安全的JavaScript分选程序,并且比大多数其他工具具有更高的压缩比。与JSMin相比,YUILibrary的测试节省了20%以上(HTTP压缩后为10%)。YU…

首先介绍一下YUI Compressor,它是一个用来压缩JS和CSS文件的工具,采用Java开发。JavaScript和CSS缩小的目标是始终保持代码的操作质量,同时减少其整体字节占用,YUI Compressor设计为100%安全的JavaScript分选程序,并且比大多数其他工具具有更高的压缩比。与JSMin相比,YUI Library 的测试节省了20%以上(HTTP压缩后为10%)。YUI Compressor还可以通过使用Isaac Schlueter的基于正则表达式的CSS minifier 的端口来压缩CSS文件。,下面为大家分享一下使用yuicompressor压缩js文件和压缩css文件。

YUI Compressor官方网址:http://yui.github.io/yuicompressor/

从Maven repository中央仓库下载yuicompressor-2.4.8.jar最新版,利用yuicompressor-2.4.8.jar包通过命令的方法实现压缩Js和压缩CSS:

//压缩JS文件

java -jar yuicompressor-2.4.8.jar –type js –charset utf-8 -v tmp.js > packed.js

//压缩CSS文件

java -jar yuicompressor-2.4.8.jar –type css –charset utf-8 -v tmp.css > packed.css

Java中使用yuicompressor压缩js文件,(yuicompressor压缩css文件,比较简单此处省略,有问题可留言)具体实现代码如下:public void jscompress(HttpServletResponse response,String content,String type) throws IOException {

Reader in = new InputStreamReader(IOUtils.toInputStream(content));

JavaScriptCompressor compressor = new JavaScriptCompressor(in, new ErrorReporter() {

public void warning(String message, String sourceName,

int line, String lineSource, int lineOffset) {

if (line 

System.err.println(“/n[WARNING] ” + message);

} else {

System.err.println(“/n[WARNING] ” + line + ‘:’ + lineOffset + ‘:’ + message);

}

}

public void error(String message, String sourceName,

int line, String lineSource, int lineOffset) {

if (line 

System.err.println(“/n[ERROR] ” + message);

} else {

System.err.println(“/n[ERROR] ” + line + ‘:’ + lineOffset + ‘:’ + message);

}

}

public EvaluatorException runtimeError(String message, String sourceName,

int line, String lineSource, int lineOffset) {

error(message, sourceName, line, lineSource, lineOffset);

return new EvaluatorException(message);

}

});

if(type!=null && type.equals(“yui”)){

compressor.compress(response.getWriter(), -1, true, false, false, false);

}else if(type!=null && type.equals(“pack”)){//普通压缩

compressor.compress(response.getWriter(), 0, true, false, false, false);

}

}

在运行时抛出“java.lang.StringIndexOutOfBoundsException: String index out of range: 17”异常,具体日志如下:java.lang.StringIndexOutOfBoundsException: String index out of range: 17

at java.lang.String.substring(String.java:1907)

at com.yahoo.platform.yui.compressor.JavaScriptCompressor.printSourceString(JavaScriptCompressor.java:269)

at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:333)

at com.yahoo.platform.yui.compressor.JavaScriptCompressor.(JavaScriptCompressor.java:536)

at com.yoodb.tools.compress.CompressController.jscompress(CompressController.java:74)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:601)

解决方法:

在pom.xml文件中增加如下内容,排除rhino依赖,用于解决“java.lang.StringIndexOutOfBoundsException”异常:

com.yahoo.platform.yui

yuicompressor

2.4.8

rhino

js

注意:

避免js文件中出现中文,或者通过其他途径解决中文问题,否则抛出“org.mozilla.javascript.EvaluatorException”异常,具体日志如下:org.mozilla.javascript.EvaluatorException: Compilation produced 1 syntax errors.

at com.yoodb.tools.compress.CompressController$1.runtimeError(CompressController.java:95)

at org.mozilla.javascript.Parser.parse(Parser.java:396)

at org.mozilla.javascript.Parser.parse(Parser.java:340)

at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:315)

at com.yahoo.platform.yui.compressor.JavaScriptCompressor.(JavaScriptCompressor.java:536)

at com.yoodb.tools.compress.CompressController.jscompress(CompressController.java:75)

今天的文章java 压缩js css_Java使用YUI Compressor压缩JS/CSS文件分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/27573.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注