vshow vif区别,vshow和vif有啥区别

一、v-if和v-show的异同点
1.相同点 :v-if和v-show都可以动态控制DOM元素的显示隐藏。
2.不同点:v-if是动态地向DOM树中添加或删除DOM元素节点;v-show是通过向DOM元素设置样式display属性值控制显示隐藏。
我们通过一个简单的demo对比观察下:

<body> <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是惰性的,若最初指令值为false,它是不会编译的,直至指令值为true才开始局部编译存入缓存;v-show不管最初指令值为真假都会马上编译存入缓存,保留DOM。
2.消耗方面:v-if切换性能消耗较大;v-show最初渲染消耗较大。
3.适用场景:v-if适用切换条件、项目需求稳定;v-show适用频繁需要切换。
4.语法方面:v-if可与v-else、v-else-if配合使用进行判断执行,但一定需要相邻,不可中断;v-show无特殊语法。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注