在这篇文章中,我简单介绍了前端模板引擎。John Resig写的tmpl函数麻雀虽小五脏俱全,足以满足日常开发需要。本文主要探讨一下tmpl的性能优化。
先复习一下tmpl的源代码:
var tmpl = (function() {
var cache = { };
return function(str, data) {
var fn = cache[str];
if (!fn) {
fn = new Function("obj",
"var p=[];" +
"with(obj){p.push('" +
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('');"
);
cache[str] = fn;
}
return fn(data);
};
})();