vue里面v-if和v-show的区别:
(1)v-if的true值控制是否会生成VNode,进而生成真是的dom树。当v-if的值为true的时候,会生成相应vnode,进而生成dom树。当取值为false的时候,直接不生成vnode,因此也不会生成dom树。
看下面简单的代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>搭建工程</title>
</head>
<body>
<div id="box">
<p v-if="status">I am v-if</p>
<button @click="status = !status">v-if的切换</button>
</div>
<script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
new Vue({
el:"#box",
data:{
status:true
},
methods:{
}
})
</script>
</body>
</html>
点击按钮改变v-if的值。dom里面的差别:
v-if的值为true:
v-if的值为false:
(2)v-show不管其值为true或者为false。都会生成vnode,进而生成dom树。其控制元素显示隐藏是通过元素上面的style样式(display:none)来进行控制。
上截图:
v-show为true的时候:
v-show的值为false的时候:
通过图片对比就可以看出区别。v-show时dom树是存在的。
(3)使用v-if可以有效的减少节点和树的渲染量,但是会使得树不稳定;使用v-show可以保持树的稳定性,但是不能减少树的节点的渲染量。
实际开发中:
实际开发者,对于需要频繁变化显示状态的使用v-show,以保持树的稳定性;显示状态切换较少的情况下,使用v-if,减少节点和树的渲染量。