面试题 v-if跟v-show的区别

简介: 面试题 v-if跟v-show的区别

v-if&v-show


  1. 区别
  • 展示形式不同 v-if是 创建一个dom节点 V-show 是 display:none / block
  • 使用场景不同 初次加载 v-if 要 比v-show 好,页面不会做加载盒子 频繁切换 v-show 要比 v-if 好,创建和删除的开销太大了,显示和隐藏开销较小


  1. 优先级问题
    源码中体现 >> v-for 比 if 比较高
  2. 一起使用
  1. 报错
4:11  error  The 'arr' variable inside 'v-for' directive should be replaced with a c


  1. 影响性能
    v-if条件不满足 >> 也会执行遍历 >> 性能差
  2. 怎么解决
    v-if添加到外层盒子,不满足条件 >> 不执行渲染


代码演示:

function genElement (el, state) {
    if (el.parent) {
      el.pre = el.pre || el.parent.pre;
    }
    if (el.staticRoot && !el.staticProcessed) {
      return genStatic(el, state)
    } else if (el.once && !el.onceProcessed) {
      return genOnce(el, state)
    } else if (el.for && !el.forProcessed) {
      return genFor(el, state)
    } else if (el.if && !el.ifProcessed) {
      return genIf(el, state)
    } else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
      return genChildren(el, state) || 'void 0'
    } else if (el.tag === 'slot') {
      return genSlot(el, state)
    } else {
      // component or element
      var code;
      if (el.component) {
        code = genComponent(el.component, el, state);
      } else {
        var data;
        if (!el.plain || (el.pre && state.maybeComponent(el))) {
          data = genData$2(el, state);
        }
        var children = el.inlineTemplate ? null : genChildren(el, state, true);
        code = "_c('" + (el.tag) + "'" + (data ? ("," + data) : '') + (children ? ("," + children) : '') + ")";
      }
      // module transforms
      for (var i = 0; i < state.transforms.length; i++) {
        code = state.transforms[i](el, code);
      }
      return code
    }
  }
目录
相关文章
|
2天前
|
索引
【ES6新语法】let、const、var的区别,你学会了面试官没话说
【ES6新语法】let、const、var的区别,你学会了面试官没话说
|
2天前
|
前端开发
vue2与vue3双向数据绑定的区别,前端面试自我介绍
vue2与vue3双向数据绑定的区别,前端面试自我介绍
|
3天前
|
开发工具 Python
Python中return和yield的区别,面试官不讲武德
Python中return和yield的区别,面试官不讲武德
|
3天前
|
消息中间件 前端开发 Java
java面试刷题软件kafka和mq的区别面试
java面试刷题软件kafka和mq的区别面试
|
4天前
|
设计模式 API 数据格式
腾讯面试官问我适配器和桥接器的区别?
腾讯面试官问我适配器和桥接器的区别?
7 0
|
4天前
|
Java 调度
一张图搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
一张图搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
31 2
|
4天前
|
Java
面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉
面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉
23 1
|
4天前
|
存储 安全 Java
Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
13 0
|
4天前
|
Java
面试官:小伙子来说一说Java中final关键字,以及它和finally、finalize()有什么区别?
面试官:“小伙子,用过final关键字吗?” 我:“必须用过呀” 面试官:“好,那来说一说你对这个关键字的理解吧,再说一说它与finally、finalize()的区别” 我:“好嘞!
20 1
|
4天前
|
存储 安全 Java
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
面试官:请聊一聊String、StringBuilder、StringBuffer三者的区别
40 8