<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        Javascript模板技術(shù)_javascript技巧

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 20:36:49
        文檔

        Javascript模板技術(shù)_javascript技巧

        Javascript模板技術(shù)_javascript技巧:/***Template.class.js***/ function Template() { this.classname=Template; this.debug=false; this.file=new HashMap(); this.root=; this.varkeys=new HashMap(); this.varvals=new HashMap(); this.unknowns=remove; this.halt_on_error=yes; th
        推薦度:
        導(dǎo)讀Javascript模板技術(shù)_javascript技巧:/***Template.class.js***/ function Template() { this.classname=Template; this.debug=false; this.file=new HashMap(); this.root=; this.varkeys=new HashMap(); this.varvals=new HashMap(); this.unknowns=remove; this.halt_on_error=yes; th

        /***Template.class.js***/

        function Template()
        {
        this.classname="Template";
        this.debug=false;
        this.file=new HashMap();
        this.root="";
        this.varkeys=new HashMap();
        this.varvals=new HashMap();
        this.unknowns="remove";
        this.halt_on_error="yes";
        this.last_error="";
        this.fso=new ActiveXObject("Scripting.FileSystemObject");
        this.set_root=_set_root;
        this.set_unknowns=_set_unknowns;
        this.get_var=_get_var;
        this.set_file=_set_file;
        this.set_var=_set_var;
        this.set_block=_set_block;
        this.subst=_subst;
        this.parse=_parse;
        this.p=_p;
        this.pparse=_pparse;
        this.finish=_finish;
        this.loadfile=_loadfile;
        this.is_dir=_is_dir;
        this.file_exists=_file_exists;
        this.filename=_filename;
        this.varname=_varname;
        this.halt=_halt;
        this.haltmsg=_haltmsg;
        }

        /**
        * 設(shè)置模板文件根目錄
        * @param root
        */
        function _set_root(root)
        {
        if(!this.is_dir(root))
        {
        this.halt("set_root:"+root+" is not a directory.");
        }
        this.root=root;
        }

        /**
        * 設(shè)定對未知模板變量的處理辦法
        * @param unknowns
        */
        function _set_unknowns(unknowns)
        {
        this.unknowns=unknowns;
        }

        /**
        * 設(shè)定模板文件
        * @param handle
        * @param filename
        */
        function _set_file(handle,filename)
        {
        this.file.put(handle,this.filename(filename));
        }

        /**
        * 設(shè)定模板變量
        * @param varname
        * @param value
        */
        function _set_var(varname,value)
        {
        if(!this.varkeys.containsKey(varname))
        {
        this.varkeys.put(varname,this.varname(varname));
        }
        if(!this.varvals.containsKey(varname))
        {
        this.varvals.put(varname,value);
        }
        else
        {
        this.varvals.remove(varname);
        this.varvals.put(varname,value);
        }
        //alert(varname+"=================="+value);
        }

        /**
        * 設(shè)定塊變量
        * @param parent
        * @param handle
        * @param name
        */
        function _set_block(parent,handle,name)
        {
        if(!this.loadfile(parent))
        {
        this.halt("subst:unable to load "+parent);
        }
        if(name=="")
        {
        name=handle;
        }
        var str=this.get_var(parent);
        var re=new RegExp("([\\s\\S.]*)");
        //Matcher m=p.matcher(str);
        //var rs=m.find();
        //var t=m.group(m.groupCount());
        //this.set_var(handle,t);
        var arr=re.exec(str);
        if(arr!=null)
        this.set_var(handle,RegExp.$1);
        str=str.replace(re,"{"+name+"}");
        this.set_var(parent,str);
        }

        /**
        * 進行變量替換
        * @param handle
        * @return
        */
        function _subst(handle)
        {
        if(!this.loadfile(handle))
        {
        this.halt("subst:unable to load "+handle);
        }
        var str=this.get_var(handle);
        var keys=this.varkeys.keySet();
        //alert(keys.length);
        for(var i=0;i{
        var key=keys[i];
        var re=new RegExp(this.varkeys.get(key),"g")
        str=str.replace(re,this.varvals.get(key));
        }
        //alert(handle+"++++++++++++++++++"+str);
        return str;
        }

        /**
        * 進行變量復(fù)制
        * @param target
        * @param handle
        * @param append
        */
        function _parse(target,handle,append)
        {
        var str=this.subst(handle);
        if(append)
        {
        this.set_var(target,this.get_var(target)+str);
        }
        else
        {
        this.set_var(target,str);
        }
        }

        /**
        * 返回替換后的文件
        * @param varname
        * @return
        */
        function _p(varname)
        {
        return this.finish(this.get_var(varname));
        }

        /**
        * parse()和p()的合并
        * @param target
        * @param handle
        * @param append
        * @return
        */
        function _pparse(target,handle,append)
        {
        this.parse(target,handle,append);
        document.writeln(this.p(target));
        }

        /**
        * 加載模板文件
        * @param handle
        * @return
        */
        function _loadfile(handle)
        {
        if(this.varkeys.containsKey(handle) && this.varvals.get(handle)!=null)
        {
        return true;
        }
        if(!this.file.containsKey(handle))
        {
        _halt("loadfile:"+handle+" is not a valid handle.");
        return false;
        }
        var filename=this.file.get(handle);
        if(!this.file_exists(filename))
        {
        this.halt("loadfile:while loading "+handle+","+filename+" does not exist.");
        return false;
        }
        try
        {
        var fr=this.fso.OpenTextFile(filename);
        var s=fr.ReadAll();
        if(s=="")
        {
        halt("loadfile:while loading "+handle+","+filename+" is empty.");
        return false;
        }
        this.set_var(handle,s);
        }
        catch(e)
        {

        }
        return true;
        }

        /**
        * 獲取變量
        * @param varname
        * @return
        */
        function _get_var(varname)
        {
        if(this.varvals.containsKey(varname))
        return this.varvals.get(varname);
        else
        return "";
        }

        /**
        * 判斷目錄
        * @param path
        * @return
        */
        function _is_dir(path)
        {
        if(this.fso.FolderExists(path))
        return true;
        else
        return false;
        }

        /**
        * 判斷文件
        * @param filename
        * @return
        */
        function _file_exists(filename)
        {
        if(this.fso.FileExists(filename))
        return true;
        else
        return false;
        }

        /**
        * 文件名處理
        * @param filename
        * @return
        */
        function _filename(filename)
        {
        if(!this.file_exists(this.root+filename))
        {
        this.halt("filename:file "+filename+" does not exist.");
        }
        return this.root+filename;
        }

        /**
        * 變量名處理
        * @param varname
        * @return
        */
        function _varname(varname)
        {
        return "{"+varname+"}";
        }

        /**
        * 完成字符串的處理
        * @param str
        * @return
        */
        function _finish(str)
        {
        var re=new RegExp("{[^ \\t\\r\\n\\}]+\\}","g");
        if(this.unknowns=="remove")
        {
        str=str.replace(re,"");
        }
        else if(this.unknowns=="comment")
        {
        str=str.replace(re,"");
        }
        else
        {

        }
        return str;
        }

        function _halt(msg)
        {
        this.last_error=msg;
        if(this.halt_on_error!="no")
        {
        _haltmsg(msg);
        }
        if(this.halt_on_error=="yes")
        {
        alert("Halted.");
        //System.exit(0);
        }
        }

        function _haltmsg(msg)
        {
        alert("Template Error:"+msg);
        }


        /**
        * HashMap構(gòu)造函數(shù)
        */
        function HashMap()
        {
        this.length = 0;
        this.prefix = "hashmap_prefix_20050524_";
        }
        /**
        * 向HashMap中添加鍵值對
        */
        HashMap.prototype.put = function (key, value)
        {
        this[this.prefix + key] = value;
        this.length ++;
        }
        /**
        * 從HashMap中獲取value值
        */
        HashMap.prototype.get = function(key)
        {
        return typeof this[this.prefix + key] == "undefined"
        ? null : this[this.prefix + key];
        }
        /**
        * 從HashMap中獲取所有key的集合,以數(shù)組形式返回
        */
        HashMap.prototype.keySet = function()
        {
        var arrKeySet = new Array();
        var index = 0;
        for(var strKey in this)
        {
        if(strKey.substring(0,this.prefix.length) == this.prefix)
        arrKeySet[index ++] = strKey.substring(this.prefix.length);
        }
        return arrKeySet.length == 0 ? null : arrKeySet;
        }
        /**
        * 從HashMap中獲取value的集合,以數(shù)組形式返回
        */
        HashMap.prototype.values = function()
        {
        var arrValues = new Array();
        var index = 0;
        for(var strKey in this)
        {
        if(strKey.substring(0,this.prefix.length) == this.prefix)
        arrValues[index ++] = this[strKey];
        }
        return arrValues.length == 0 ? null : arrValues;
        }
        /**
        * 獲取HashMap的value值數(shù)量
        */
        HashMap.prototype.size = function()
        {
        return this.length;
        }
        /**
        * 刪除指定的值
        */
        HashMap.prototype.remove = function(key)
        {
        delete this[this.prefix + key];
        this.length --;
        }
        /**
        * 清空HashMap
        */
        HashMap.prototype.clear = function()
        {
        for(var strKey in this)
        {
        if(strKey.substring(0,this.prefix.length) == this.prefix)
        delete this[strKey];
        }
        this.length = 0;
        }
        /**
        * 判斷HashMap是否為空
        */
        HashMap.prototype.isEmpty = function()
        {
        return this.length == 0;
        }
        /**
        * 判斷HashMap是否存在某個key
        */
        HashMap.prototype.containsKey = function(key)
        {
        for(var strKey in this)
        {
        if(strKey == this.prefix + key)
        return true;
        }
        return false;
        }
        /**
        * 判斷HashMap是否存在某個value
        */
        HashMap.prototype.containsValue = function(value)
        {
        for(var strKey in this)
        {
        if(this[strKey] == value)
        return true;
        }
        return false;
        }
        /**
        * 把一個HashMap的值加入到另一個HashMap中,參數(shù)必須是HashMap
        */
        HashMap.prototype.putAll = function(map)
        {
        if(map == null)
        return;
        if(map.constructor != JHashMap)
        return;
        var arrKey = map.keySet();
        var arrValue = map.values();
        for(var i in arrKey)
        this.put(arrKey[i],arrValue[i]);
        }
        //toString
        HashMap.prototype.toString = function()
        {
        var str = "";
        for(var strKey in this)

        {
        if(strKey.substring(0,this.prefix.length) == this.prefix)
        str += strKey.substring(this.prefix.length)
        + " : " + this[strKey] + "\r\n";
        }
        return str;
        }

        "http://www.w3.org/TR/html4...



        無標題文檔


        {HEAD}


        {WELCOME}










        {NUMBER}

        {FOOT}







        網(wǎng)站首頁






        版權(quán)所有:網(wǎng)站夢工廠

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Javascript模板技術(shù)_javascript技巧

        Javascript模板技術(shù)_javascript技巧:/***Template.class.js***/ function Template() { this.classname=Template; this.debug=false; this.file=new HashMap(); this.root=; this.varkeys=new HashMap(); this.varvals=new HashMap(); this.unknowns=remove; this.halt_on_error=yes; th
        推薦度:
        標簽: js 模板 模版
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲av片不卡无码久久| 中文字幕在线观看亚洲日韩| 无码AV动漫精品一区二区免费| 在线观看无码AV网站永久免费| 亚洲免费二区三区| 国内免费高清在线观看| 亚洲欧美第一成人网站7777| 免费的一级黄色片| 国产亚洲美女精品久久久久| 免费a级毛片大学生免费观看| 一本一道dvd在线观看免费视频| 中国亚洲女人69内射少妇| 中文字幕免费在线观看动作大片| 亚洲日韩欧洲乱码AV夜夜摸| 最近免费mv在线观看动漫| 亚洲黄色网址大全| 女人被男人躁的女爽免费视频| 老牛精品亚洲成av人片| 国产成人毛片亚洲精品| 日本在线免费播放| 亚洲一级毛片免费在线观看| 女人18毛片水真多免费播放| 日韩在线视频免费| 亚洲国产精品无码久久久秋霞2| 亚洲无砖砖区免费| 国产成人综合亚洲绿色| 久久91亚洲人成电影网站| 亚洲免费在线视频观看| 亚洲av永久无码天堂网| 2048亚洲精品国产| 四虎1515hh永久久免费| 黄页网站在线免费观看| 久久久无码精品亚洲日韩京东传媒| 午夜网站免费版在线观看| 国产精品免费αv视频| 亚洲女人初试黑人巨高清| 日本高清免费不卡视频| 两个人看的www高清免费观看| 亚洲国产综合精品| 久久亚洲AV无码西西人体| 国产精品爱啪在线线免费观看|