说起模板,很多人会认为这是后台的东西(如PHP的Smarty、Java的Velocity),跟前端没有关系。然而,随着前端的逻辑变得越来越复杂,引入模板引擎已经是非常必要了。
模板引擎的主要功能就是把变化的数据融入到不变的模板中,并生成最终结果。目前,前端的主要数据格式无非是XML和JSON。
如果选择XML作为数据格式,XSLT就是最佳的模板语言,但XML+XSLT的缺点非常明显:
- 兼容性问题。XML+XSLT在不同浏览器下的转换方式有所不同。
- XML、XSLT的语法都是极其冗余的,数据量相对较大。
如果选择JSON作为数据格式,就没有原生的模板语言可用了,只能生拼字符串。例如,把下面代码中的data转换成一个表格:
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'));