v-if:
v-if指令设置隐藏是将DOM元素整个删除,DOM元素不存在
不会展示,操作的是内存
v-show:
v-show指令设置隐藏是为该元素添加css样式--display:none,但DOM元素还存在
操作的是display none中的css样式
v-if和v-show的区别:
手段:
v-if是动态的向DOM树内添加或者删除DOM元素
v-show是通过设置DOM元素的display样式属性控制显隐
编译过程:
v-if切换有一个局部编译/卸载的过程,切换过程中合适的销毁和重建内部的事件监听和子组件
v-show只是简单的基于css切换
编译条件:
v-if是惰性的,初始条件是假,则什么都不做,只有在条件第一次为真时才开始局部编译(编译被缓存?编译被缓存后,然后再切换的时候进行局部卸载)
v-show是在任何条件下(首次条件是否为真)都被编译,然后被缓存,而且DOM元素保留
性能消耗:
v-if有更高的切换消耗
v-show有更高的初始渲染消耗
使用场景:
v-if适合运营条件不大可能改变
v-show适合频繁切换
总结:
v-if 比 v-show 安全
v-show 比 v-if 快