vue底层之mustache初识

Posted 简单的小伙子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue底层之mustache初识相关的知识,希望对你有一定的参考价值。

什么是模板引擎
mustache基本使用
mustache的底层核心机理
带你手写实现mustache

什么是模板引擎:
结论:模板引擎是将数据要变为视图最优雅的解决方案

其他:mustache又称为小胡子

历史上将数据变为视图的方法

纯Dom法:

直接进行dom操作回显数据,需要创建子节点进行添加到dom上面,


<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
	<ui id="list">
	</ui>
</body>
<script>
	var arr = [
		 "name": "小明", "age": "23", "sex": "男" ,
		 "name": "小张", "age": "23", "sex": "女" ,
		 "name": "小耿", "age": "23", "sex": "女" ,
		 "name": "小李", "age": "23", "sex": "男" 
	];
var list = document.getElementById("list")
	for(let i = 0; i < arr.length; i++) 
		// 每遍历一项,都要用DOM方法去创建li标签
		let oli = document.createElement("li");
		oli.innerHTML = arr[i].name;
		// 创建的节点都是孤儿节点,需要上树才能被用户看见
		list.appendChild(oli)
	
</script>

</html>

效果图,想要回显更多的数据,就要进行更多的dom操作,此处就不一一进行操作,理解dom法将数据变为视图就好。

数组join法:

首先:字符串中是不能进行转弯的(ES6中的反引号之前),在这之前有人发现了join法将数组进行拼接和转换,可以比较直观的看出代码的结构的。
上代码


<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>

<body>
	<ui id="list">

	</ui>

</body>
<script>
	var arr = [
		 "name": "小明", "age": "23", "sex": "男" ,
		 "name": "小张", "age": "23", "sex": "女" ,
		 "name": "小耿", "age": "23", "sex": "女" ,
		 "name": "小李", "age": "23", "sex": "男" 
	];
	// 实际上是没有换行的,但是进行代码阅读的时候,有换行的感觉,让人读起来更有逻辑感
	// 可以在代码之中记性斩断链接(字符串拼接)
	var list = document.getElementById("list")
	// 遍历arr数组,每遍历一项,就以字符串的视角将HTML字符串中
	for (let i = 0; i < arr.length; i++) 
		liat.innerHTML += [
			'<li>',
			'	<div class="hd">'+arr[i].name+'的信息'+'</div>',
			'	<div class="bd">',
			'		<P>姓名:</P>',
			'		<P>年龄:</P>',
			'		<P>性别:</P>',
			'	</div>',
			'</li>'
		].join('')
	

	var str = [
		'<li>',
		'	<div class="hd"></div>',
		'	<div class="bd">',
		'		<P>姓名:</P>',
		'		<P>年龄:</P>',
		'		<P>性别:</P>',
		'	</div>',
		'</li>'
	].join('');

</script>

</html>
ES6中的反引号法

在es6中有了反引号,并且在反引号之中可以使用$来获取变量值,这样使写代码更加方便

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<title>Document</title>
</head>
<body>
	<ui id="list">
	</ui>
</body>
<script>
	var arr = [
		 "name": "小明", "age": "23", "sex": "男" ,
		 "name": "小张", "age": "23", "sex": "女" ,
		 "name": "小耿", "age": "23", "sex": "女" ,
		 "name": "小李", "age": "23", "sex": "男" 
	];
	// 实际上是没有换行的,但是进行代码阅读的时候,有换行的感觉,让人读起来更有逻辑感
	// 可以在代码之中记性斩断链接(字符串拼接)
	var list = document.getElementById("list")
	// 遍历arr数组,每遍历一项,就以字符串的视角将HTML字符串中
	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>
</html>

效果图,前两个例子也应该是这个图

模板引擎法


mustache是模板引擎中比较古老的一个,模板引擎中的鼻祖
bootCDN:链接
bootCDN是一个对第三方插件的一个官方的引用地址,可以将第三方插件直接使用CDN方式引入,相当于镜像网址。
mustache的用法:
# arr// 开始循环这个数组 / arr// 循环这个数组结束

以上是关于vue底层之mustache初识的主要内容,如果未能解决你的问题,请参考以下文章

mustache模板技术初识

初始vue

vue 模板语法

iOS底层探索之多线程—初识GCD

mustache模板引擎

mustache模板引擎