热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

javascript模板系统ejsv6

此版本有如下改进:吸取众人的意见,防止与ASP等后台模板的界定符冲突,默认左右界定符为加入新的操作符

此版本有如下改进:

  • 吸取众人的意见&#xff0c;防止与ASP等后台模板的界定符冲突&#xff0c;默认左右界定符为<&&#xff0c;&>
  • 加入新的操作符<&~&#xff0c;至此整个操作符体系为:
  • 为了迎合大规模开发的需要&#xff0c;后台数据统统增加&#64;标识&#xff0c;一来便于修改&#xff0c;二来内部实现抛弃了with语句&#xff0c;强行让它们依附于data对象&#xff0c;让我们可以使用||设置默认值。


//dom.ejs v6 by 司徒正美
//http://www.cnblogs.com/rubylouvre/archive/2010/10/04/1841933.html
;(function(){this.dom &#61; {quote : String.quote || function (str) {str &#61; str.replace(/[\x00-\x1f\\]/g, function (chr) {var special &#61; metaObject[chr];return special ? special : &#39;\\u&#39; &#43; (&#39;0000&#39;&#43;chr.charCodeAt(0).toString(16)).slice(-4);});return &#39;"&#39; &#43; str.replace(/"/g, &#39;\\"&#39;) &#43; &#39;"&#39;;}}if(!String.prototype.trim){String.prototype.trim &#61; function(){return this.replace(/^[\s\xa0]&#43;|[\s\xa0]&#43;$/g, &#39;&#39;);}};(function(w,s){//http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspxs &#61; ["XMLHttpRequest","ActiveXObject(&#39;Msxml2.XMLHTTP.6.0&#39;)","ActiveXObject(&#39;Msxml2.XMLHTTP.3.0&#39;)","ActiveXObject(&#39;Msxml2.XMLHTTP&#39;)","ActiveXObject(&#39;Microsoft.XMLHTTP&#39;)"];//IE专有的JScript方法&#xff1a;ScriptEngine&#xff0c;ScriptEngineBuildVersion&#xff0c;ScriptEngineMajorVersion&#xff0c;ScriptEngineMinorVersion&#xff0c;CollectGarbage&#xff0c;RuntimeObject和GetObject。if( !-[1,] && w.ScriptEngineMinorVersion() &#61;&#61;&#61; 7 && location.protocol &#61;&#61;&#61; "file:"){s.shift();}for(var i &#61; 0 ,el;el&#61;s[i&#43;&#43;];){try{if(eval("new "&#43;el)){dom.xhr &#61; new Function( "return new "&#43;el);break;}}catch(e){}}})(window);var metaObject &#61; {&#39;\b&#39;: &#39;\\b&#39;,&#39;\t&#39;: &#39;\\t&#39;,&#39;\n&#39;: &#39;\\n&#39;,&#39;\f&#39;: &#39;\\f&#39;,&#39;\r&#39;: &#39;\\r&#39;,&#39;\\&#39;: &#39;\\\\&#39;},_startOfHTML &#61; "\t__views.push(",_endOfHTML &#61; ");\n",_rAt &#61; /(^|[^\w\u00c0-\uFFFF_])(&#64;)(?&#61;\w)/g,_partial &#61; function(url){var xhr &#61; dom.xhr();xhr.open("GET",url,false);xhr.setRequestHeader("If-Modified-Since","0");xhr.send(null);return xhr.responseText|| ""}dom.ejs &#61; function(obj,usePart){if(!usePart){//如果普通模板&#xff0c;则要整理配置文件obj.left &#61; obj.left || "<&";obj.right &#61; obj.right || "&>";obj.rLeft &#61; obj.rLeft || new RegExp("\\s*"&#43; obj.left&#43;"\\s*");obj.rRight &#61; obj.rRight || new RegExp("\\s*"&#43; obj.right&#43;"\\s*");}var key &#61; obj.selector || obj.url,rAt &#61; _rAt,startOfHTML &#61; _startOfHTML,endOfHTML &#61; _endOfHTML,partial &#61; _partial,self &#61; arguments.callee,buff &#61; ["var __views &#61; [];\n"],str,logic;if(obj.selector){var el &#61; document.getElementById(key);if (!el) throw "can not find the target element";str &#61; el.text;}else {str &#61; partial(obj.url);if (!str) throw "the target file does not exist";}if(!self[key]){var arr &#61; str.trim().split(obj.rLeft),temp &#61; [],url,selector,i&#61;0,n&#61;arr.length,els,segment;while(i})();

dom.ejs v6 by 司徒正美

运行代码

重申一次&#xff0c;并不是前台模板系统无能&#xff0c;只是你我做的项目不同&#xff0c;访问量大小决定着代码需要用另一种截然不同的方式实现。我想到一个例子&#xff0c;就是腾讯的QQ群&#xff0c;里面80%的内容都是JS模板。



推荐阅读
author-avatar
葛菁昱
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有