Vue面试之v-if与v-show的区别


最近在整理一些前端面试中经常被问到的问题,分为vue相关、react相关、js相关、react相关等等专题,可持续关注后续内容,会不断进行整理~

作为Vue中两种条件性渲染元素的指令,v-if和v-show还是有一些区别的:

DOM渲染

  • v-if
       在条件切换时,元素的创建和销毁都会发生,即当条件为“true”时,元素就会被渲染到DOM中;反之当条件为“false”时,元素就会从DOM中移除
  • v-show
       在条件切换时,元素的创建和销毁不会发生,即不管条件是“true”还是“false”,元素都会被渲染到DOM中;只是通过css属性的“display”属性来控制元素的显示和隐藏;

初始渲染性能

  • v-if
       在初始渲染时,若条件为“false”,则元素不会被渲染到DOM中
  • v-show
       在初始渲染时,不管条件真否,元素都会渲染到DOM中,只是显示与否的问题,因此会有一定的初始性能消耗;

切换开销

  • v-if
       在条件真假切换时,所对应的DOM元素会被反复的创建和销毁,会有一定的切换性能消耗
  • v-show
       不管条件真假,DOM元素都不会被改变,只是通过display属性进行显示和隐藏,当条件为真时,对应显示;反正隐藏;因此切换开销较小

标签配合

  • v-if
       v-if可以用在标签上,并且可以与v-else配合使用
  • v-show
       上述两种情况都不行

源码实现

  • v-if
       v-if通过在编译阶段生成条件判断代码(三元表达式判断),根据条件的真假来决   定是否执行该判断代码,进而控制元素的渲染或销毁。
    v-if的源码实现
  • v-show
       v-show是通过设置元素的style属性,将display样式属性设置为none(隐藏)或其它值(原本设置的非none值),进而控制元素的可见性;
    v-show的源码实现

总而言之,选择使用 v-if 还是 v-show 取决于具体的使用场景和性能需求。如果元素的显示频繁切换,而且在切换时的开销较小,可以考虑使用 v-show。如果元素的显示条件在运行时很少改变可以选择 v-if。

相关推荐

  1. Vue v-if v-show 区别

    2024-01-13 19:12:05       29 阅读
  2. Vue v-ifv-show区别

    2024-01-13 19:12:05       21 阅读
  3. vuev-ifv-show区别

    2024-01-13 19:12:05       18 阅读
  4. Vue2面试题:说一下v-showv-ifv-for理解?

    2024-01-13 19:12:05       34 阅读
  5. Vuev-showv-if 有什么区别

    2024-01-13 19:12:05       26 阅读
  6. VUE v-ifv-show 区别和例子

    2024-01-13 19:12:05       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-13 19:12:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-13 19:12:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-13 19:12:05       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-13 19:12:05       20 阅读

热门阅读

  1. Driver.js使用指南

    2024-01-13 19:12:05       38 阅读
  2. TypeScript基础知识:类型守卫和类型推断

    2024-01-13 19:12:05       37 阅读
  3. 【WPF.NET开发】WPF中的拖放

    2024-01-13 19:12:05       37 阅读
  4. C# Chart控件

    2024-01-13 19:12:05       30 阅读
  5. awk获取filebeat注册表offset的值

    2024-01-13 19:12:05       35 阅读