JS代码的格式化和压缩

2016-02-19 15:00 3 1 收藏

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

【 tulaoshi.com - Web开发 】

曾经为看别人写的杂乱代码而头痛吗?曾经为看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://www.tulaoshi.com/webkaifa/)        var quote_char                  = "";       //引用标记类型

        var function_opened             = false;

        var bracket_open                = false;
        var for_open                    = false;

(本文来源于图老师网站,更多请访问http://www.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])){ 

来源:http://www.tulaoshi.com/n/20160219/1608601.html

延伸阅读
标签: 电脑入门
在重装系统时把C盘格式化 1、光驱启动 (1)Award Bion 4.51PG设置 重启,按DEL进入BIOS Award 4.51PG界面,用功能键区方向键选第二行"BIOS  Features Setup"(BIOS特性设置),回车进入BIOS Features Setup界面,找到第七行"Boot  Sequence",用PgUp或PgDn翻页将它右边显示的A,C,换成CDROM,C,A。 按ESC,按F1...
对于很多电脑使用者来说,对c盘这个名称并不陌生,不仅很多软件会默认储存在c盘,而且c盘里面都是电脑重要的启动系统,可想而知c盘在电脑里面的重要性了。随着电脑的使用的次数变多,人们对于一些电脑问题也就越发疑惑了。就比如如果我想格式化c盘,那么命令符号有哪些呢?如果我格式化之后会产生什么样的问题呢?以下知识为你详细解答。 ...
标签: Web开发
New Document [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]
标签: 办公软件
在建立一个新的Word文件的时候,一般要使标题居中,设置字体、字号、字形等。我们可以把这些设置工作做成一种固定的格式,每次建立新文档时自动套用这种格式的标题。 在Word 2000中,新建一个Word文档,单击“工具”菜单中的“自动更正”命令。打开“自动更正”对话框,选择“键入时自动套用格式”选项卡,将“键入时自动应用”中的“...
B计划数据恢复软件恢复格式化压缩文件教程   1、ZIP RAR压缩格式化前后所在的文件系统都是NTFS/EXFat/FAT32之一,并且格式化的ZIP RAR压缩文件大小和位置没有改变. 2、如果ZIP RAR压缩文件之前文件系统是NTFS/EXFat/FAT32之一,但格式化之后的分区已经改变了,请选择分区恢复 3、如果ZIP RAR压缩文件格式化前后的文件系统不...

经验教程

31

收藏

57
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部