通过Java压缩JavaScript代码实例分享
通过移除空行和注释来压缩JavaScript代码
/**
*ThisfileispartoftheEchoWebApplicationFramework(hereinafter\"Echo\").
*Copyright(C)2002-2009NextApp,Inc.
*
*CompressesaStringcontainingJavaScriptbyremovingcommentsandwhitespace.
*/
publicclassJavaScriptCompressor{
privatestaticfinalcharLINE_FEED=\'\\n\';
privatestaticfinalcharCARRIAGE_RETURN=\'\\r\';
privatestaticfinalcharSPACE=\'\';
privatestaticfinalcharTAB=\'\\t\';
/**
*CompressesaStringcontainingJavaScriptbyremovingcommentsand
*whitespace.
*
*@paramscripttheStringtocompress
*@returnacompressedversion
*/
publicstaticStringcompress(Stringscript){
JavaScriptCompressorjsc=newJavaScriptCompressor(script);
returnjsc.outputBuffer.toString();
}
/**OriginalJavaScripttext.*/
privateStringscript;
/**
*Compressedoutputbuffer.
*Thisbuffermayonlybemodifiedbyinvokingtheappend()
*method.
*/
privateStringBufferoutputBuffer;
/**Currentparsercursorpositioninoriginaltext.*/
privateintpos;
/**Characteratparsercursorposition.*/
privatecharch;
/**Lastcharacterappendedtobuffer.*/
privatecharlastAppend;
/**Flagindicatingifend-of-bufferhasbeenreached.*/
privateBooleanendReached;
/**Flagindicatingwhethercontenthasbeenappendedafterlastidentifier.*/
privateBooleancontentAppendedAfterLastIdentifier=true;
/**
*CreatesanewJavaScriptCompressorinstance.
*
*@paramscript
*/
privateJavaScriptCompressor(Stringscript){
this.script=script;
outputBuffer=newStringBuffer(script.length());
nextchar();
while(!endReached){
if(Character.isJavaIdentifierStart(ch)){
renderIdentifier();
}elseif(ch==\'\'){
skipWhiteSpace();
}elseif(isWhitespace()){
//Compresswhitespace
skipWhiteSpace();
}elseif((ch==\'\"\')||(ch==\'\\\'\')){
//Handlestrings
renderString();
}elseif(ch==\'/\'){
//Handlecomments
nextChar();
if(ch==\'/\'){
nextChar();
skipLineComment();
}elseif(ch==\'*\'){
nextChar();
skipBlockComment();
}else{
append(\'/\');
}
}else{
append(ch);
nextChar();
}
}
}
/**
*Appendcharactertooutput.
*
*@paramchthecharactertoappend
*/
privatevoidappend(charch){
lastAppend=ch;
outputBuffer.append(ch);
contentAppendedAfterLastIdentifier=true;
}
/**
*Determinesifcurrentcharacteriswhitespace.
*
*@returntrueifthecharacteriswhitespace
*/
privatebooleanisWhitespace(){
returnch==CARRIAGE_RETURN||ch==SPACE||ch==TAB||ch==LINE_FEED;
}
/**
*Loadnextcharacter.
*/
privatevoidnextChar(){
if(!endReached){
if(pos
总结
以上就是本文关于通过Java压缩JavaScript代码实例分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!