JS模版

jQuery的JS模版 http://plugins.jquery.com/node/3694

John Resig的JS模版
http://ejohn.org/blog/javascript-micro-templating/#postcomment

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> New Document </TITLE>
  <META NAME="Generator" CONTENT="EditPlus">
  <META NAME="Author" CONTENT="http://ejohn.org/blog/javascript-micro-templating/">
  <META NAME="Keywords" CONTENT="">
  <META NAME="Description" CONTENT="">
  <script>
function init()
{
 // Simple JavaScript Templating
 // John Resig - http://ejohn.org/ - MIT Licensed
 (function(){
   var cache = {};
  
   this.tmpl = function tmpl(str, data){
  // Figure out if we're getting a template, or if we need to 当我们想要一个模版的时候
  // load the template - and be sure to cache the result.  需要先加载模版,特别要记得把结果缓存起来
  var fn = !/\W/.test(str) ?  
  cache[str] = cache[str] || tmpl(document.getElementById(str).innerHTML)   
  :
    // Generate a reusable function that will serve as a template 生成一个可重用的方法 我们可以当成一个模版
    // generator (and which will be cached). 生成 而且会缓存
    new Function("obj",
   "var p=[],print=function(){p.push.apply(p,arguments);};" +   
   // Introduce the data as local variables using with(){}  用(){}生成局部变量
   "with(obj){p.push('" +   
   // Convert the template into pure JavaScript 把模版转换成JS代码
   str.replace(/[\r\t\n]/g, " ").split("<%").join("\t").replace(/((^|%>)[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%>/g, "',$1,'").split("\t").join("');").split("%>").join("p.push('").split("\r").join("\\'")+ "');}return p.join('');");
  // Provide some basic currying to the user 提供给用户基本的
  alert(fn)
  return data ? fn( data ) : fn;
   };
 })();

 var results = document.getElementById("results");
 var dataObject = {i:4,profile_image_url:'http://www.baidu.com/img/baidu_logo.gif',from_user:'xx',id:9,text:'hello'};
 results.innerHTML = tmpl("item_tmpl", dataObject);
}
  </script>

<script type="text/html" id="item_tmpl">
  <div id="<%=id%>" class="? 1 == 2 % <%=(i" even" : "")%>">
    <div class="right alpha grid_1">
      <img class="righted" src="<%=profile_image_url%>"/>
    </div>
    <div class="contents omega grid_6">
      <p><b><a href="/<%=from_user%>"><%=from_user%></a>:</b> <%=text%></p>
    </div>
  </div>
</script>

</HEAD>
 <BODY onload="init()">
 <form>
  <div id='results'></div>
   </form>
 </BODY>
</HTML>

原文地址:https://www.cnblogs.com/xjyggd/p/1671772.html