源码链接
Vue2.x-mustache模板引擎(笔记)
历史上曾经出现的数据变为视图的方法
纯 DOM 法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>01_数据变为视图-纯DOM法</title>
</head>
<body>
<ul id="list"></ul>
<script>
var arr = [
{
name: '小明', age: 12, sex: '男' },
{
name: '小红', age: 11, sex: '女' },
{
name: '小强', age: 13, sex: '男' },
]
var list = document.getElementById('list')
for (let i = 0; i < arr.length; i++) {
let oLi = document.createElement('li')
let hdDiv = document.createElement('div')
hdDiv.className = 'hd'
hdDiv.innerText = arr[i].name + '的基本信息'
oLi.appendChild(hdDiv)
let bdDiv = document.createElement('div')
bdDiv.className = 'bd'
let p1 = document.createElement('p')
p1.innerText = '姓名:' + arr[i].name
bdDiv.appendChild(p1)
let p2 = document.createElement('p')
p2.innerText = '年龄:' + arr[i].age
bdDiv.appendChild(p2)
let p3 = document.createElement('p')
p3.innerText = '性别:' + arr[i].sex
bdDiv.appendChild(p3)
oLi.appendChild(bdDiv)
list.appendChild(oLi)
}
</script>
</body>
</html>
数组 join 法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>02_数据变为视图-数组join法</title>
</head>
<body>
<ul id="list">
</ul>
<script>
var arr = [
{
name: '小明', age: 12, sex: '男' },
{
name: '小红', age: 11, sex: '女' },
{
name: '小强', age: 13, sex: '男' },
]
var list = document.getElementById('list')
for (let i = 0; i < arr.length; 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('')
}
</script>
</body>
</html>
ES6 的反引号法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>03_数据变为视图-ES6反引号法</title>
</head>
<body>
<ul id="list">
</ul>
<script>
var arr = [
{
name: '小明', age: 12, sex: '男' },
{
name: '小红', age: 11, sex: '女' },
{
name: '小强', age: 13, sex: '男' },
]
var list = document.getElementById('list')
for (let i = 0; i < arr.length; 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>
`
}
</script>
</body>
</html>
mustache 的基本使用
mustache 库简介
mustache
官方 git
:https://github.com/janl/mustache.js
mustache
是 “胡子” 的意思,因为它的嵌入标记 {
{ }}
非常像胡子
{
{ }}
的语法也被 Vue
沿用
mustache
是最早的模板引擎库,比 Vue
诞生的早多了,它的底层实现机理在当时是非常有创造性的、轰动性的,为后续模板引擎的发展提供了崭新的思路
mustache 的基本使用
- 必须引入
mustache
库,可以在 https://www.bootcdn.cn/ 上找到它
mustache
的模板语法非常简单,比如前述案例的模板语法如下:
{
{#arr}}
<li>
<div class="hd">{
{name}}的基本信息</div>
<div class="bd">
<p>姓名:{
{name}}</p>
<p>年龄:{
{age}}</p>
<p>性别:{
{sex}}</p>
</div>
</li>
{
{/arr}}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title