JS代码的格式化和压缩

无路可退的石头

无路可退的石头

2016-02-19 15:00

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐JS代码的格式化和压缩,希望大家看完后也有个好心情,快快行动吧!

曾经为看别人写的杂乱代码而头痛吗?曾经为看BWindow代码而烦恼吗?曾经为减小JS体积和JS的可读性之间的矛盾而左右徘徊吗?最好的办法是有个代码格式化和代码压缩的程序,今天总算有了,它是纯JS编写的,当然也就是开源的了.不好意思,做个广告先:),老早就想写这个代码了,今天总算利用这个周末把它写完了,由于写的仓促,还有些小BUG,请经常注意更新!


HTMLHEADTITLEFormat/TITLE
META content="MSHTML 6.00.2800.1528" name=GENERATOR
META content="" name=Author
META content="" name=Keywords
META content="" name=Description/HEAD
BODY
SCRIPT language=javascript
!--
/**//**//**//**
**    ================================================================================================== 
**    类名:CLASS_FORMATER
**    功能:JS格式化 
**    示例: 
    --------------------------------------------------------------------------------------------------- 
 
            var xx        = new CLASS_FORMATER(code);           

            document.getElementById("display").innerHTML = xx.format();
 
    --------------------------------------------------------------------------------------------------- 
**    作者:ttyp 
**    邮件:ttyp@21cn.com 
**    日期:2006-5-21 
**    版本:0.1
**    ================================================================================================== 
**/ 

function CLASS_FORMAT(code){
    //哈希表类
    function Hashtable(){
        this._hash        = new Object();
        this.add        = function(key,value){
                            if(typeof(key)!="undefined"){
                                if(this.contains(key)==false){
                                    this._hash[key]=typeof(value)=="undefined"?null:value;
                                    return true;

;      for(var i in _key){
            if(_cs){
                _hash.add(_key[i]);
            } else {
                _hash.add((_key[i]+"").toLowerCase());
            }

        }
        return _hash;
    }

    //获得需要转换的代码
    this._codetxt        = code;

    if(typeof(syntax)=="undefined"){
        syntax = "";
    }

    this._deleteComment = false;
    //是否大小写敏感
    this._caseSensitive = true;
    //可以后面加块语句的关键字
    this._blockElement  = this.str2hashtable("switch,if,while,try,finally");
    //是函数申明
    this._function      = this.str2hashtable("function");
    //本行括号内分号不做换行
    this._isFor            = "for";

    this._choiceElement = this.str2hashtable("else,catch");

    this._beginBlock    = "{";
    this._endBlock      = "}";
   
    this._singleEyeElement = this.str2hashtable("var,new,return,else,delete,in,case");
    //得到分割字符
    this._wordDelimiters= "  ,.?!;:\/(){}[]"'rnt=+-|*%@#$^&";
    //引用字符
    this._quotation     = this.str2hashtable("",'");
    //行注释字符
    this._lineComment   = "//";
    //转义字符
    this._escape        = "\";
    //多行引用开始
    this._commentOn        = "/*";
    //多行引用结束
    this._commentOff    = "*/";
    //行结束词
    this._rowEnd        = ";";

    this._in            = "in";


    this.isCompress        = false;
    this.style            = 0;

    this._tabNum  &n

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)        var quote_char                  = "";       //引用标记类型

        var function_opened             = false;

        var bracket_open                = false;
        var for_open                    = false;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

        //按分割字,分块显示
        for (var i=0; i =word_index; i++){           
            //处理空行(由于转义带来)
            if(typeof(codeArr[i])=="undefined"||codeArr[i].length==0){
                continue;
            } else if(codeArr[i]==" "||codeArr[i]=="t"){
                if(slash_slash_comment_opened||slash_star_comment_opened){
                    if(!this._deleteComment){
                        htmlTxt[htmlTxt.length] = codeArr[i];
                    }
                }
                if(quote_opened){
                        htmlTxt[htmlTxt.length] = codeArr[i];                   
                }
            } else if(codeArr[i]=="n"){
            //处理换行
            } else if (codeArr[i] == "r"){                         &nb

;    } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._rowEnd){
                if(!this.isCompress){
                    if(!for_open){
                        if(iword_index&&(codeArr[i+1]!="r"&&codeArr[i+1]!="n")){                           
                            htmlTxt[htmlTxt.length] = codeArr[i] + "n" + this.getIdent();
                        }else{
                            htmlTxt[htmlTxt.length] = codeArr[i] + this.getIdent();
                        }
                    }else{
                        htmlTxt[htmlTxt.length] = codeArr[i];                   
                    }
                }else{
                    htmlTxt[htmlTxt.length] = codeArr[i];
                }
            } else if(!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._beginBlock){
                for_open    = false;
                if(!this.isCompress){
                    switch(this.style){
   &nbs

bsp;    }

            } else if(!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened &&codeArr[i]==this._endBlock){
                if(!this.isCompress){
                    this._tabNum--;
                    if(iword_index&&codeArr[i+1]!=this._rowEnd){
                        htmlTxt[htmlTxt.length] = "n" + this.getIdent() + codeArr[i];
                    }else{
                        htmlTxt[htmlTxt.length] = "n" + this.getIdent() + codeArr[i];
                    }
                }else{
                    if(iword_index&&codeArr[i+1]!=this._rowEnd){
                        htmlTxt[htmlTxt.length] = codeArr[i] + this._rowEnd;
                    }else{
                        htmlTxt[htmlTxt.length] = codeArr[i];
                    }
                }
            //处理关键字
            } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened && this.isBlockElement(codeArr[i])){    
                htmlTxt[htmlTxt.length] = codeArr[i];
            //处理内置对象(后面加一个空格)
            } else if (!slash_slash_comment_opened&&!slash_star_comment_opened && !quote_opened && this.isSingleEyeElement(codeArr[i])){ 

展开更多 50%)
分享

猜你喜欢

JS代码的格式化和压缩

Web开发
JS代码的格式化和压缩

CSS代码格式化和压缩的方法与技巧

Web开发
CSS代码格式化和压缩的方法与技巧

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

JS代码格式化和语法着色V2

Web开发
JS代码格式化和语法着色V2

js prototype 格式化数字 By shawl.qiu

Web开发
js prototype 格式化数字 By shawl.qiu

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

“磁盘未被格式化,是否格式化”的解决方法

电脑入门
“磁盘未被格式化,是否格式化”的解决方法

美化你的代码 vb(VBS)代码格式化的实现代码

编程语言 网络编程
美化你的代码 vb(VBS)代码格式化的实现代码

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

基于Struts的权限实现

基于Struts的权限实现

struts构建文件上传(九)

struts构建文件上传(九)
下拉加载更多内容 ↓