亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

通過Java壓縮JavaScript代碼實例分享

2024-07-13 10:14:16
字體:
來源:轉載
供稿:網友

通過移除空行和注釋來壓縮 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 <code>append()</code>   * 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 <code>JavaScriptCompressor</code> 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 < script.length()) {        ch = script.charAt(pos++);      } else {        endReached = true;        ch = 0;      }    }  }  /**   * Adds an identifier to output.   */  private void renderIdentifier() {    if (!contentAppendedAfterLastIdentifier)      append(SPACE);    append(ch);    nextChar();    while (Character.isJavaIdentifierPart(ch)) {      append(ch);      nextChar();    }    contentAppendedAfterLastIdentifier = false;  }  /**   * Adds quoted String starting at current character to output.   */  private void renderString() {    char startCh = ch; // Save quote char    append(ch);    nextChar();    while (true) {      if ((ch == LINE_FEED) || (ch == CARRIAGE_RETURN) || (endReached)) {        // JavaScript error: string not terminated        return;      } else {        if (ch == /'/////') {          append(ch);          nextChar();          if ((ch == LINE_FEED) || (ch == CARRIAGE_RETURN) || (endReached)) {            // JavaScript error: string not terminated            return;          }          append(ch);          nextChar();        } else {          append(ch);          if (ch == startCh) {            nextChar();            return;          }          nextChar();        }      }    }  }  /**   * Moves cursor past a line comment.   */  private void skipLineComment() {    while ((ch != CARRIAGE_RETURN) && (ch != LINE_FEED)) {      if (endReached) {        return;      }      nextChar();    }  }  /**   * Moves cursor past a block comment.   */  private void skipBlockComment() {    while (true) {      if (endReached) {        return;      }      if (ch == /'*/') {        nextChar();        if (ch == /'//') {          nextChar();          return;        }      } else        nextChar();    }  }  /**   * Renders a new line character, provided previously rendered character    * is not a newline.   */  private void renderNewLine() {    if (lastAppend != /'//n/' && lastAppend != /'//r/') {      append(/'//n/');    }  }  /**   * Moves cursor past white space (including newlines).   */  private void skipWhiteSpace() {    if (ch == LINE_FEED || ch == CARRIAGE_RETURN) {      renderNewLine();    } else {      append(ch);    }    nextChar();    while (ch == LINE_FEED || ch == CARRIAGE_RETURN || ch == SPACE || ch == TAB) {      if (ch == LINE_FEED || ch == CARRIAGE_RETURN) {        renderNewLine();      }      nextChar();    }  }}

總結

以上就是本文關于通過Java壓縮JavaScript代碼實例分享的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色香阁99久久精品久久久| 性欧美暴力猛交69hd| 国产精品日韩在线观看| 97精品国产aⅴ7777| 欧美日韩一区二区三区| 中文字幕欧美日韩在线| 日韩风俗一区 二区| 精品国产成人在线| 色偷偷91综合久久噜噜| 中文字幕久久久av一区| 69视频在线播放| 高清欧美一区二区三区| 久久精品一区中文字幕| 亚洲人成网站999久久久综合| 亚洲天堂av在线免费观看| 国产精品久久久久久久电影| 一区三区二区视频| 96sao精品视频在线观看| 中文字幕日韩在线播放| 美日韩丰满少妇在线观看| 亚洲人成网站777色婷婷| 成人福利在线观看| 日韩视频在线观看免费| 欧美理论电影在线播放| 久久亚洲精品国产亚洲老地址| 日韩中文字幕视频在线观看| 国产精品成人久久久久| 668精品在线视频| 欧美成人午夜剧场免费观看| 国产精品国内视频| 久久99国产精品久久久久久久久| 色99之美女主播在线视频| 欧美日韩国产123| 成人免费网站在线| 久久九九国产精品怡红院| 国产精品电影一区| 久久久久999| 三级精品视频久久久久| 久久久伊人日本| 欧美午夜精品在线| 自拍偷拍亚洲一区| 国产精品影院在线观看| 亚洲网址你懂得| 精品国产一区二区三区四区在线观看| 成人日韩av在线| 一夜七次郎国产精品亚洲| 激情成人中文字幕| 日韩激情视频在线播放| 久久久久久久色| 亚洲国产精品女人久久久| 亚洲欧美中文在线视频| 日韩美女中文字幕| 亚洲最新av在线| 欧美精品久久久久久久| 91美女片黄在线观看游戏| 国产激情视频一区| 亚洲国产日韩欧美综合久久| 91高潮在线观看| 欧美色视频日本高清在线观看| 在线观看欧美www| 亚洲精品在线91| 久久久精品久久| 亚洲男人的天堂在线| 欧美日韩福利在线观看| 成人网址在线观看| 欧美激情xxxx| 久久久精品视频在线观看| 欧美极品少妇xxxxⅹ免费视频| 成人精品久久av网站| 国产一区二区黑人欧美xxxx| 神马久久桃色视频| 美乳少妇欧美精品| 高清欧美一区二区三区| 国产一区二区三区三区在线观看| 亚洲精品视频播放| 亚洲第一区中文99精品| 国产精品福利小视频| 国产一区二区香蕉| 97超视频免费观看| 国产成人综合久久| 亚洲国产精品久久91精品| 精品国产老师黑色丝袜高跟鞋| 欧美高清第一页| 成人黄在线观看| 成人久久一区二区三区| 精品国产乱码久久久久酒店| 国产午夜精品美女视频明星a级| 中文字幕一区电影| 亚洲欧美综合图区| 性欧美xxxx| 岛国av一区二区| 亚洲美女喷白浆| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品欧美日韩| 色哟哟网站入口亚洲精品| 超在线视频97| 97精品视频在线播放| 免费99精品国产自在在线| 亚洲美腿欧美激情另类| 精品福利在线视频| 成人福利视频网| 色妞色视频一区二区三区四区| 国产精品一区二区3区| 久久久久久久久久久91| 日韩精品中文字幕有码专区| 国产日韩欧美在线看| 91免费看视频.| 欧美日韩国产黄| 不卡av在线播放| 欧美日韩高清在线观看| 国产精品久久一区主播| 国产亚洲一区二区在线| 91精品国产综合久久久久久蜜臀| 国产成人一区二| 亚洲人精品午夜在线观看| 国产精品爽爽ⅴa在线观看| 亚洲字幕在线观看| 亚洲国产精品久久久久秋霞蜜臀| 国产精品免费网站| 最新69国产成人精品视频免费| 日韩精品免费看| 亚洲欧美制服丝袜| 国产视频精品va久久久久久| 成人www视频在线观看| 亚洲图片欧洲图片av| 亚洲免费影视第一页| 日本伊人精品一区二区三区介绍| 91在线高清免费观看| 国产精品视频午夜| 久久99国产精品久久久久久久久| 欧美一级电影久久| 欧美日韩999| 欧美日韩国产精品一区二区三区四区| 日韩福利伦理影院免费| 国产精品手机播放| 成人性生交大片免费看视频直播| 国产一区二区美女视频| 欧美在线一区二区视频| 亚洲国产精品嫩草影院久久| 久久久久北条麻妃免费看| 欧美黑人狂野猛交老妇| 欧美极品在线播放| 欧美日韩国产91| 亚洲欧美一区二区三区四区| 成人激情视频免费在线| 日韩大陆毛片av| 最近的2019中文字幕免费一页| 亚洲欧美精品一区二区| 在线观看欧美成人| 日韩高清不卡av| 91久久国产精品| 伊人成人开心激情综合网| 日本在线精品视频| 韩国欧美亚洲国产| 一区二区三区久久精品| 欧美限制级电影在线观看| 欧美精品性视频| 日本精品久久久久久久| 国产精品老女人精品视频| 欧美大胆在线视频| 日韩欧美高清视频| 国产成人午夜视频网址| 国产精品成人一区二区| 亚洲欧美日韩国产精品|