这篇文章主要为大家详细介绍了前端Javascript模板引擎菜鸟教程,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编罗X来看看吧。
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
var data = [
{ id : 1, name : 'Google', url : "google.com" },
{ id : 2, name : '百度', url : "baidu.com" },
{ id : 3, name : '有道', url : "youdao.com" }
], html = [ ];
html.push('<table>');
for (var i = 0; i < data.length; i++) {
html.push('<tr>');
html.push('<td>', data[i].id, '</td>');
html.push('<td><a href="http://', data[i].url, '" target="_blank">', data[i].name, '</a></td>');
html.push('</tr>');
}
html.push('</table>');
document.write(html.join('\r\n'));
看到这么多单引号、双引号之后,我觉得很头晕。这明显是不可取的。恰巧,大三下学期实习的时候,在一位前辈的代码中看到一种正则表达式做的简单模板引擎: JS代码如下:
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
function parseTemplate(data, tpl) {
return tpl.replace(/\{\$(\w+)\}/g, function($0, $1) {
return data[$1];
});
}
有了parseTemplate后,连接字符串的过程就可以简化为(粗体部分为模板): JS代码如下:
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
html.push('<table>');
for (var i = 0; i < data.length; i++) {
html.push(
parseTemplate(data[i], '<tr><td>{$id}</td><td><a href="{$url}" target="_blank">{$name}</a></td></tr>')
);
}
html.push('</table>');
这样优化过后,代码清晰了一点。然而,这种模板引擎无法应付稍微复杂一点的逻辑。假设我要突出显示排在第一位的数据,parseTemplate就无能为力了。
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
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);
};
})();
其原理是把模板“编译”为Javascript的原生语法。这个引擎的优点在于:
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
var template = '\
<table>\
<% for (var i = 0; i < data.length; i++) { %>\
<tr>\
<td><%=data[i].id%></td>\
<td><a href="<%=data[i].url%>" target="_blank"><%=data[i].name%></a></td>\
</tr>\
<% } %>\
\
</table>';
document.write( tmpl(template, { data : data }) );
至此,显示的逻辑已经完全在模板里面,代码清晰明了。
本文来自:http://www.q1010.com/174/1637-0.html
注:关于前端Javascript模板引擎菜鸟教程的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:模板引擎
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。