Mustache的语法:
1.可以直接写变量,还可以写简单表达式
<div id="app">
<h2>{{message}}</h2>
<h2>{{message}},啧啧啧</h2>
<!-- Mustache的语法不仅可以直接写变量,还可以写简单表达式 -->
<h2>{{firstName + lastName}}</h2>
<h2>{{firstName + " " + lastName}}</h2>
<h2>{{firstName}}{{lastName}}</h2>
<h2>{{count * 2}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊",
firstName:"skt t1",
lastName:"faker",
count:100
}
})
</script>
v-once指令的使用:
只会渲染一次,数据改变不会再次渲染
<div id="app">
<h2>{{message}}</h2>
<!-- 只会渲染一次,数据改变不会再次渲染 -->
<h2 v-once>{{message}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊"
}
})
setTimeout(() => {
app.message="你不好吗"
}, 2000);//由于v-once的存在。使得渲染次数为一次,所以此定时器不会对下面的{{message}}再次渲染
</script>
v-html指令的使用:
在某些时候我们不希望直接输出`<a href='http://www.baidu.com'>百度一下</a>`这样的字符串,而输出被html自己转化的超链接。此时可以使用v-html。
<div id="app">
<h2>不使用v-html</h2>
<h2>{{url}}</h2>
<h2>使用v-html,直接插入html</h2>
<h2 v-html="url"></h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊",
url:"<a href='http://www.baidu.com'>百度一下</a>"
}
})
</script>
v-text指令的使用:
使用v-text,以文本形式显示,会覆盖之前的文本内容
<div id="app">
<h2>不使用v-text</h2>
<h2>{{message}},啧啧啧</h2>
<h2>使用v-text,以文本形式显示,会覆盖</h2>
<h2 v-text="message">,啧啧啧</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊"
}
})
</script>
v-pre指令的使用:
使用v-pre修饰的dom会直接输出字符串。
<div id="app">
<h2>不使用v-pre</h2>
<h2>{{message}}</h2>
<h2>使用v-pre,不会解析</h2>
<h2 v-pre>{{message}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
const app = new Vue({
el:"#app",
data:{
message:"你好啊"
}
})
</script>
v-cloak指令的使用:
有时候因为加载延时问题,例如卡掉了,数据没有及时刷新,就造成了页面显示从`{{message}}`到message变量“你好啊”的变化,这样闪动的变化,会造成用户体验不好。此时需要使用到`v-cloak`的这个标签。在vue解析之前,div属性中有`v-cloak`这个标签,在vue解析完成之后,v-cloak标签被移除。简单,类似div开始有一个css属性`display:none;`,加载完成之后,css属性变成`display:block`,元素显示出来。
这里通过延时1秒模拟加载卡住的状态,结果一开始不显示message的值,div元素中有v-cloak的属性,1秒后显示message变量的值,div中的v-cloak属性被移除。
<style>
[v-cloak]{
display: none;
}
</style>
<div id="app" v-cloak>
<h2>{{message}}</h2>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.10/dist/vue.js"></script>
<script>
//在vue解析前,div中有一个属性cloak
//在vue解析之后,div中没有一个属性v-cloak,延时出现变量,
setTimeout(() => {
const app = new Vue({
el: "#app",
data: {
message: "你好啊"
}
})
}, 1000);
</script>