共同点: 都能控制元素的显示和隐藏;
不同点: 实现本质方法不同,v-show 本质就是通过控制 css 中的 display 设置为 none,控制隐藏,只会编译一次;
v-if 是动态的向 DOM 树内添加或者删除 DOM 元素,若初始值为 false ,就不会编译了。
而且 v-if 不停的销毁和创建比较消耗性能。
总结:如果要频繁切换某节点,使用 v-show (切换开销比较小,初始开销较大)。
如果不需要频繁切换某节点使用 v-if(初始渲染开销较小,切换开销比较大)。
拓展:display:none 、visibility :hidden和 opacity:0的区别
display:none 隐藏,元素脱离文档流,元素不再占据页面空间,后面元素上前补位;
visibility:hidden 隐藏 ,不脱离文档流,页面不可见,但是占据位置。素仍旧存在,页面中无法触发该元素的事件
opacity:0: 元素透明度将为 0,但元素仍然存在,绑定的事件仍旧有效仍可触发执行。
网友评论