一、v-if和v-show的异同点
1.相同点 :v-if和v-show都可以动态控制DOM元素的显示隐藏。
2.不同点:v-if是动态地向DOM树中添加或删除DOM元素节点;v-show是通过向DOM元素设置样式display属性值控制显示隐藏。我们通过一个简单的demo对比观察下:
<div id="app">
<div v-if="isIf"><p>我被v-if控制</p></div>
<div v-show="isShow"><p>我被v-show控制</p></div>
<button @click="pChange">Change</button>
</div>
</body>
<script>
var vm = new Vue({
el:"#app",
data:{
isIf:true,
isShow:true
},
methods:{
pChange(){
this.isIf=(this.isIf===true?false:true);
this.isShow=(this.isShow===true?false:true);
}
}
})
</script>
这个demo用一个button按钮执行函数控制v-if和v-show的值(true/false切换),在控制台不难看出,当两个指令值都为false时,v-if控制的元素是直接从DOM树销毁的;而v-show控制的元素还在DOM树中,只是以display:none样式隐藏元素内容。
二、v-if和v-show特性总结
1.消耗方面:v-if切换性能消耗较大;v-show最初渲染消耗较大。
2.适用场景:v-if适用切换条件、项目需求稳定;v-show适用频繁需要切换。
3.语法方面:v-if可与v-else、v-else-if配合使用进行判断执行,但一定需要相邻,不可中断;v-show无特殊语法。