通过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; /** *CreatesanewJavaScriptCompressor
instance. * *@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代码实例分享的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!