首页 > 代码库 > 发现一段精简的模板算法(非原创)

发现一段精简的模板算法(非原创)

引用自: http://ejohn.org/blog/javascript-micro-templating/

// 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        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    return data ? fn( data ) : fn;  };})();