Vue性能优化篇之v-if和v-show的区别和使用场景

777 阅读2分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

v-if和v-show的介绍

v-if

v-if是判断某一个元素是否存在于DOM节点上。

例如👇

image.png

通过上面的例子不难发现,v-if判断条件不成功的情况下,元素是不会被挂载在DOM节点上的。

v-show

v-show是决定一个在DOM上的元素,是否显示。

image.png

看上面的截图可以发现,v-show判断不成功的情况下,元素是依然挂载在DOM节点上的。只是多加了一个“display:none”属性而已。

v-if和v-show的区别

其实这不是一个什么难题,看了上面的例子不难发现。他们的区别其实就是:v-if是决定元素是否需要生成在DOM节点树上。而v-show所判断的元素是一定在节点树上的,v-show只能决定这个元素是否被显示(换言之,v-show就是决定display的值是否为none)

在不同情况下合理使用v-if和v-show

在什么情况下使用v-if ?

当你的一个元素需要进行v-if的判断次数不高的时候(小于3次)的时候,比如,在初始化显示的时候。很少去触发v-if。只判断1次2次就不会去判断的,那么就用v-if,让这个元素不必挂载在DOM上,减小DOM压力。

但是当我们一个元素需要频繁的出现和消失时候 (比如闪烁效果),这个时候使用v-show的效果会更好。因为在DOM上增删节点,是需要一定成本的,而这个成本相对于添加display这个属性来说,要更高。在频繁的增删DOM节点和频繁的修改display中,明显后者的成本更低。

结论

  • v-if 决定被判断元素是否挂载于DOM节点上

  • v-show 决定被判断元素是否添加display:none

  • 在需要频繁显示/隐藏某一个元素的情况下,使用v-show,而当元素显示/隐藏的频率较少的时候,则使用v-if。

欢迎技术沟通,摸鱼聊天~

备注来自掘金~

wx:XXF1096032096