应项目需要,采用yuicompressor对js/css文件进行压缩混淆,于是编写了一个java文件,接收参数目前只开放两个,一个为目录(可以是整个项目路径),一个是是否混淆(默认true)。程序会循环目录下所有的js/css文件,已经是min文件的除外,进行压缩之后覆盖原文件,因此一般用于开发完成测试之前做。日志文件会显示出处理的具体文件,以及由于编写不规范导致无法压缩的文件。个人碰到过一个CSS文件,文件末尾多了写了/*!,整个压缩过程就一直停留在这里了。因此使用此工具要求文件编写要规范。
public class JsAndCssZip { static Logger logger = Logger.getLogger(JsAndCssZip.class.getName()); int linebreakpos = -1;// 无断行 boolean munge = true;// 混淆 boolean verbose = false;// 显示信息性消息和警告 boolean preserveAllSemiColons = true; // 保留所有分号 boolean disableOptimizations = true; // 禁用所有微优化 public static void main(String[] args) { PropertyConfigurator.configure("./src/log4j.properties"); if (args == null || args.length == 0) { logger.error("pls input the file or dir params!"); return; } File file = new File(args[0]); logger.debug("zip path:" + args[0]); if (!file.exists()) { logger.error("the file or dir do not exist!"); return; } JsAndCssZip inst = new JsAndCssZip(); if (args.length > 1) { inst.munge = args[1].equalsIgnoreCase("false") ? false : true; } logger.debug("munge:" + inst.munge); Date d = new Date(); logger.debug("start time : " + d); try { inst.checkFile(file); } catch (Exception e) { e.printStackTrace(); } Date d1 = new Date(); logger.debug("end time " + d1); logger.debug("FINISHED AND COST TIME(ms):" + (d1.getTime() - d.getTime())); } public void checkFile(File file) throws Exception { if (file.getName().endsWith(".svn")) return; if (file.isFile()) { jsZip(file); return; } File[] files = file.listFiles(); if (files == null || files.length == 0) return; for (File f : files) { if (file.getName().endsWith(".svn")) return; if (file.isFile()) { jsZip(file); continue; } checkFile(f); } } public void jsZip(File file) throws Exception { String fileName = file.getName(); if (fileName.endsWith(".js") == false && fileName.endsWith(".css") == false) { return; } if (fileName.endsWith(".min.js") == true || fileName.endsWith(".min.css") == true) { return; } Reader in = new InputStreamReader(new FileInputStream(file), "utf-8"); String filePath = file.getAbsolutePath(); logger.debug("DEAL FILE:" + filePath); File tempFile = new File(filePath + ".tempFile"); Writer out = new OutputStreamWriter(new FileOutputStream(tempFile), "utf-8"); if (fileName.endsWith(".js")) { try { JavaScriptCompressor jscompressor = new JavaScriptCompressor(in, new ErrorReporter() { public void warning(String message, String sourceName, int line, String lineSource, int lineOffset) { if (line < 0) { // logger.error("[WARNING] " + message); } else { // logger.error("[WARNING] " + line + ':' + lineOffset + ':' + message); } } public void error(String message, String sourceName, int line, String lineSource, int lineOffset) { if (line < 0) { // logger.error("[ERROR] " + message); } else { // logger.error("[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); } }); jscompressor.compress(out, linebreakpos, munge, verbose, preserveAllSemiColons, disableOptimizations); } catch (org.mozilla.javascript.EvaluatorException e) { logger.error("[ERROR] " + file.getPath()); out.close(); in.close(); tempFile.delete(); return; } } else if (fileName.endsWith(".css")) { CssCompressor csscompressor = new CssCompressor(in); csscompressor.compress(out, linebreakpos); } out.close(); in.close(); file.delete(); tempFile.renameTo(file); tempFile.delete(); } }
需依赖yuicompressor.jar。
相关推荐
Java中实现js和css压缩,通常会使用一些开源库,例如Google的Closure Compiler和YUI Compressor,它们提供了API供开发者调用。这些工具不仅能够压缩文件,还能进行变量和函数名的混淆,进一步减小文件大小,但混淆...
基于java的开发源码-JS和CSS压缩混淆 JsCompressor.zip 基于java的开发源码-JS和CSS压缩混淆 JsCompressor.zip 基于java的开发源码-JS和CSS压缩混淆 JsCompressor.zip 基于java的开发源码-JS和CSS压缩混淆 ...
Java源码:JS和CSS压缩混淆 JsCompressor 是一个用于优化前端资源的工具,它能够对JavaScript和CSS文件进行压缩和混淆,以提高网页加载速度并保护代码安全。这个工具的核心在于减小文件大小,降低网络传输的时间,...
"基于Java的JS和CSS压缩混淆 JsCompressor.zip" 提供了一种解决方案,帮助开发者有效地处理这两种资源,以提升网页加载速度和安全性。 JavaScript是Web应用的核心,它负责处理动态交互和功能实现。然而,未经压缩的...
这里我们关注的是一个名为"基于java的JS和CSS压缩混淆 JsCompressor.zip"的工具,它显然是一个使用Java编写的程序,用于实现这个目的。下面我们将深入探讨JS和CSS压缩混淆的概念、原理以及它们为何对提升网站性能至...
JAVA源码JS和CSS压缩混淆JsCompressor
这个名为"JS和CSS压缩混淆 JsCompressor.zip"的压缩包文件提供了基于Java的源码,帮助开发者实现这一目标。 JavaScript和CSS压缩的主要目的是减少文件大小,从而加快网页加载速度。当用户访问网站时,浏览器需要...
java资源JS和CSS压缩混淆 JsCompressor提取方式是百度网盘分享地址
`YUI Compressor` 的主要功能是对JavaScript和CSS文件进行压缩,去除代码中的空白、注释和不必要的字符。它使用了高效的代码混淆算法,将变量名替换为简短的单字母形式,进一步减小文件体积。同时,对于CSS,它还会...
本实例源码"JS和CSS压缩混淆 JsCompressor.zip"提供了基于Java实现的工具,用于帮助开发者有效地处理这两种文件,提升网页加载速度并增强代码安全性。 首先,我们来探讨一下JavaScript和CSS压缩的重要性。当用户...
本文将深入探讨基于Java实现的JS和CSS压缩混淆工具——JsCompressor的相关知识点。 首先,我们理解一下JavaScript和CSS压缩的必要性。在网页开发中,未压缩的JS和CSS文件往往体积较大,包含了许多空格、注释和换行...
CSS压缩则是通过删除不必要的空格、换行和注释,以及合并重复的选择器来减小文件大小。例如,WRO4J是一个自动化资源管理工具,它可以将多个CSS文件合并为一个,并进行压缩。这样可以减少HTTP请求的数量,提高页面...
Maven作为一个强大的Java项目管理工具,提供了与各种构建优化工具集成的能力,其中包括使用YUI Compressor来压缩CSS和JS文件。YUI Compressor是一款由Yahoo开发的开源工具,它能够去除代码中的空白、注释,并进行...
)开发的一款高效的JavaScript和CSS压缩工具。它通过删除不必要的空格、换行符和注释,以及对变量和函数名进行混淆,有效地减小了文件的大小,从而加快了网页的加载速度。同时,YUI Compressor还提供了CSS的合并功能...
本篇文章将深入探讨“JAVA批量压缩JS”的主题,以及如何利用工具或自定义程序来实现对JavaScript和CSS的压缩,从而提高网页加载速度和整体性能。 一、JavaScript与CSS压缩的重要性 1. 减少文件大小:未压缩的JS和...
标题中的"压缩CSS/JS等文件的工具"指的是一类能够对样式表(CSS)和脚本(JS)文件进行压缩的软件或在线服务,它们的主要目标是减少文件大小,从而缩短网页的加载时间。 压缩CSS文件主要是通过删除不必要的空格、换...
YUI Compressor是由Yahoo开发的一款高效的JavaScript和CSS压缩工具,它可以删除代码中的空格、注释,并进行变量和函数名的混淆,从而达到压缩的目的。 以下是使用Ant和YUI Compressor进行批量压缩的基本步骤: 1. ...
为了提高网站性能,开发者通常会使用“JS CSS压缩工具”来减小文件大小,从而加快网页加载速度。 JS压缩工具的主要功能是去除代码中的空白、注释和换行,同时进行变量名混淆,使得源代码更加紧凑。这样的过程称为...
标题:“YUI+Ant 实现JS CSS压缩” 在Web开发中,为了提高页面加载速度和优化用户体验,开发者通常会使用代码压缩工具来减少JavaScript(JS)和CSS文件的大小。YUI Compressor是 Yahoo! 推出的一款开源的压缩工具,...
安装该插件后,您只需选中包含需压缩文件的上级目录,然后执行 "compress javascript" 命令,插件就会自动处理所有相关的 JavaScript 和 CSS 文件,将其压缩成更小的尺寸,同时保持原有的功能不受影响。 压缩的主要...