微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过Java压缩JavaScript代码实例分享

这篇文章主要介绍了通过Java压缩JavaScript代码实例分享,具有一定参考价值,需要的朋友可以了解下。

通过移除空行和注释来压缩 JavaScript 代码

/** * This file is part of the Echo Web Application Framework (hereinafter "Echo"). * copyright (C) 2002-2009 NextApp, Inc. * * Compresses a String containing JavaScript by removing comments and whitespace. */ public class JavaScriptCompressor { private static final char LINE_Feed = '\n'; private static final char CARRIAGE_RETURN = '\r'; private static final char SPACE = ' '; private static final char TAB = '\t'; /** * Compresses a String containing JavaScript by removing comments and * whitespace. * * @param script the String to compress * @return a compressed version */ public static String compress(String script) { JavaScriptCompressor jsc = new JavaScriptCompressor(script); return jsc.outputBuffer.toString(); } /** Original JavaScript text. */ private String script; /** * Compressed output buffer. * This buffer may only be modified by invoking the append() * method. */ private StringBuffer outputBuffer; /** Current parser cursor position in original text. */ private int pos; /** Character at parser cursor position. */ private char ch; /** Last character appended to buffer. */ private char lastAppend; /** Flag indicating if end-of-buffer has been reached. */ private Boolean endReached; /** Flag indicating whether content has been appended after last identifier. */ private Boolean contentAppendedAfterLastIdentifier = true; /** * Creates a new JavaScriptCompressor instance. * * @param script */ private JavaScriptCompressor(String script) { this.script = script; outputBuffer = new StringBuffer(script.length()); nextchar(); while (!endReached) { if (Character.isJavaIdentifierStart(ch)) { renderIdentifier(); } else if (ch == ' ') { skipwhiteSpace(); } else if (isWhitespace()) { // Compress whitespace skipwhiteSpace(); } else if ((ch == '"') || (ch == '\'')) { // Handle strings renderString(); } else if (ch == '/') { // Handle comments nextChar(); if (ch == '/') { nextChar(); skipLineComment(); } else if (ch == '*') { nextChar(); skipBlockComment(); } else { append('/'); } } else { append(ch); nextChar(); } } } /** * Append character to output. * * @param ch the character to append */ private void append(char ch) { lastAppend = ch; outputBuffer.append(ch); contentAppendedAfterLastIdentifier = true; } /** * Determines if current character is whitespace. * * @return true if the character is whitespace */ private boolean isWhitespace() { return ch == CARRIAGE_RETURN || ch == SPACE || ch == TAB || ch == LINE_Feed; } /** * Load next character. */ private void nextChar() { if (!endReached) { if (pos

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

相关推荐