mustache模板引擎(一)
什么是模板引擎
数据变成视图的最优雅的解决方案,vue的模板引擎也借鉴于此
历史上曾经出现的数据变为视图的方法
纯DOM法:非常笨拙,没有实战价值
数组join法: 曾几何时非常流行,是曾经的前端必会知识
1
2
3
4
5
6
7
8
9
10
11
12for (var i=0,len = arr.length;i<len;++i){
list.innerHTML += [
'<li>',
' <div class="hd">' +arr[i].name + '的基本信息</div>',
' <div class="bd">',
' <p>姓名:'+arr[i].name+'</p>',
' <p>年龄:'+arr[i].age+'</p>',
' <p>性别:'+arr[i].sex+'</p>',
' </div>',
'</li>'
].join('')
}ES6的反引号法:ES6中新增的${a}语法糖,很好用
1
2
3
4
5
6
7
8
9
10
11
12for (var i=0,len = arr.length;i<len;++i){
list.innerHTML += `
<li>
<div class="hd">${arr[i].name}的基本信息</div>
<div class="bd">
<p>姓名:${arr[i].name}</p>
<p>年龄:${arr[i].age}</p>
<p>性别:${arr[i].sex}</p>
</div>
</li>
`
}模板引擎:解决数据变为视图的最优雅的方法
使用主要方法
1.循环
View:
1 | { |
Template:
1 | {{#stooges}} |
Output:
1 | <b>Moe</b> |
.
简化数组循环
View:1
2
3{
"musketeers": ["Athos", "Aramis", "Porthos", "D'Artagnan"]
}
Template:
1 | {{#musketeers}} |
Output:
1 | * Athos |
实现需求
实现一个建议的for循环模板,并支持.
循环符
实现需求,将下列模板,关联data后,渲染成dom
模板:
1 | var templateStr = ` |
源码实现
看下一篇