返回顶部
首页 > 资讯 > 精选 >v-show和v-if怎么应用
  • 402
分享到

v-show和v-if怎么应用

2023-07-02 10:07:47 402人浏览 安东尼
摘要

本文小编为大家详细介绍“v-show和v-if怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“v-show和v-if怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、v-show与v-if的共同点

本文小编为大家详细介绍“v-show和v-if怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“v-show和v-if怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    一、v-show与v-if的共同点

    我们都知道在 Vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else),都能控制元素在页面是否显示

    在用法上也是相同的:

    <Model v-show="isshow" /><Model v-if="isShow" />
    • 当表达式为true的时候,都会占据页面的位置

    • 当表达式都为false时,都不会占据页面位置

    二、v-show与v-if的区别

    • 控制手段不同

    • 编译过程不同

    • 编译条件不同

    • 控制手段:v-show隐藏则是为该元素添加CSS--display:nonedom元素依旧还在。v-if显示隐藏是将dom元素整个添加或删除

    • 编译过程:v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件;v-show只是简单的基于css切换

    • 编译条件:v-if是真正的条件渲染,它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。只有渲染条件为假时,并不做操作,直到为真才渲染

      • v-show 由false变为true的时候不会触发组件的生命周期

      • v-iffalse变为true的时候,触发组件的beforeCreatecreatebeforeMountmounted钩子,由true变为false的时候触发组件的beforeDestorydestoryed方法

    • 性能消耗:v-if有更高的切换消耗;v-show有更高的初始渲染消耗;

    三、v-show与v-if原理分析

    具体解析流程这里不展开讲,大致流程如下:

    • 将模板template转为ast结构的js对象

    • ast得到的JS对象拼装renderstaticRenderFns函数

    • renderstaticRenderFns函数被调用后生成虚拟Vnode节点,该节点包含创建DOM节点所需信息

    • vm.patch函数通过虚拟DOM算法利用VNODE节点创建真实DOM节点

    v-show原理

    不管初始条件是什么,元素总是会被渲染

    我们看一下在vue中是如何实现的

    代码很好理解,有transition就执行transition,没有就直接设置display属性

    // https://GitHub.com/vuejs/vue-next/blob/3cd30c5245da0733f9eb6f29d220f39c46518162/packages/runtime-dom/src/directives/vShow.tsexport const vShow: ObjectDirective<VShowElement> = {  beforeMount(el, { value }, { transition }) {    el._vod = el.style.display === 'none' ? '' : el.style.display    if (transition && value) {      transition.beforeEnter(el)    } else {      setDisplay(el, value)    }  },  mounted(el, { value }, { transition }) {    if (transition && value) {      transition.enter(el)    }  },  updated(el, { value, oldValue }, { transition }) {    // ...  },  beforeUnmount(el, { value }) {    setDisplay(el, value)  }}

    v-if原理

    v-if在实现上比v-show要复杂的多,因为还有else else-if 等条件需要处理,这里我们也只摘抄源码中处理 v-if 的一小部分

    返回一个node节点,render函数通过表达式的值来决定是否生成DOM

    // Https://github.com/vuejs/vue-next/blob/cdc9f336fd/packages/compiler-core/src/transfORMs/vIf.tsexport const transformIf = createStructuralDirectiveTransform(  /^(if|else|else-if)$/,  (node, dir, context) => {    return processIf(node, dir, context, (ifNode, branch, isRoot) => {      // ...      return () => {        if (isRoot) {          ifNode.codegenNode = createCodegenNodeForBranch(            branch,            key,            context          ) as IfConditionalExpression        } else {          // attach this branch's codegen node to the v-if root.          const parentCondition = getParentCondition(ifNode.codegenNode!)          parentCondition.alternate = createCodegenNodeForBranch(            branch,            key + ifNode.branches.length - 1,            context          )        }      }    })  })

    四、v-show与v-if的使用场景

    v-if 与 v-show 都能控制dom元素在页面的显示

    v-if 相比 v-show 开销更大的(直接操作dom节点增加与删除)

    • 如果需要非常频繁地切换,则使用 v-show 较好

    • 如果在运行时条件很少改变,则使用 v-if 较好

    读到这里,这篇“v-show和v-if怎么应用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

    --结束END--

    本文标题: v-show和v-if怎么应用

    本文链接: https://lsjlt.com/news/341442.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • v-show和v-if怎么应用
      本文小编为大家详细介绍“v-show和v-if怎么应用”,内容详细,步骤清晰,细节处理妥当,希望这篇“v-show和v-if怎么应用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、v-show与v-if的共同点...
      99+
      2023-07-02
    • Vue指令v-show和v-if怎么使用
      本文小编为大家详细介绍“Vue指令v-show和v-if怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue指令v-show和v-if怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、v-sho...
      99+
      2023-06-29
    • Vue.js中v-show和v-if指令怎么用
      小编给大家分享一下Vue.js中v-show和v-if指令怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、v-show指令v-show指令可以用来动态的控...
      99+
      2023-06-29
    • v-show和v-if的区别 及应用场景
      目录一、v-show与v-if的共同点二、v-show与v-if的区别三、v-show与v-if原理分析v-show原理v-if原理四、v-show与v-if的使用场景 一、v-sh...
      99+
      2024-04-02
    • vue中的v-show,v-if,v-bind怎么使用
      这篇文章主要介绍了vue中的v-show,v-if,v-bind怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue中的v-show,v-if,v-bind怎么使用文章都会有所收获,下面我们一起来看看吧...
      99+
      2023-07-05
    • Vue中v-if、v-if-else、v-else-if与v-show的基本使用
      目录一、Vue的条件渲染1.1.v-if1.2.v-if-else1.3.v-else-if 1.4.template元素 1.5.v-show1.6.v...
      99+
      2022-11-13
      vue v-if v-show else if的用法 vue v-if else
    • vue中v-if和v-show的区别
      vue中v-if和v-show的区别是:1.用法不同;2.意义不同;3.组合功能不同等。用法不同,当隐藏结构时v-if结构会直接从整个dom树中移除,而v-show结构的style中加上display:none,结构依然保留。意义不同,v-...
      99+
      2024-04-02
    • vue 条件渲染v-if和v-show
      目录1、v-if2、在<template>上使用v-if3、用 key 管理可复用的元素4、v-show 4.1 v-if 对比 v-show1、v-if 在模板中,可以...
      99+
      2024-04-02
    • v-if和v-show的区别在哪
      v-if和v-show的区别:1、渲染方式,v-if是惰性渲染,v-show则是控制元素的显示和隐藏;2、初始渲染开销,v-if在初始渲染时,如果条件为假,就不会渲染,可以减少开销,v-show会在初始渲染时就全部渲染;3、切换开销,v-i...
      99+
      2023-08-09
    • vue中v-if和v-show有什么区别
      这篇文章主要介绍了vue中v-if和v-show有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。v-if 和 v-show 有什么区...
      99+
      2024-04-02
    • Vue的v-if和v-show有什么区别
      本篇内容主要讲解“Vue的v-if和v-show有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue的v-if和v-show有什么区别”吧!一、v-if和v-show区别① ...
      99+
      2023-07-05
    • vue中的v-if和v-show有什么区别
      小编给大家分享一下vue中的v-if和v-show有什么区别,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
      99+
      2024-04-02
    • Vue中常用指令v-if, v-for, v-show,v-else, v-bind, v-on有什么用
      这篇文章给大家分享的是有关Vue中常用指令v-if, v-for, v-show,v-else, v-bind, v-on有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。V...
      99+
      2024-04-02
    • 组件v-if和v-show切换得方法
      本文小编为大家详细介绍“组件v-if和v-show切换得方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“组件v-if和v-show切换得方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学...
      99+
      2024-04-02
    • Vue.js中v-show和v-if指令的用法介绍
      目录一、v-show指令二、v-if指令三、v-show和v-if的区别四、v-else指令五、v-else-if一、v-show指令 v-show指令可以用来动态的控制DOM元素的...
      99+
      2024-04-02
    • vue中v-if和v-show命令有什么区别
      这篇文章将为大家详细讲解有关vue中v-if和v-show命令有什么区别,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。v-if和v-show 的区别是什么?第一种回答方式...
      99+
      2024-04-02
    • vuejs中v-if和v-show的区别有哪些
      小编给大家分享一下vuejs中v-if和v-show的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1.官网概念描述v...
      99+
      2024-04-02
    • vue中v-if和v-show使用区别源码分析
      目录一、v-if1、render2、vNode3、patch小结二、v-show1、render2、vNode3、patch(1)normalizeDirectives(2)call...
      99+
      2024-04-02
    • vue中v-if、v-else-if、v-else怎么用
      这篇文章主要为大家展示了“vue中v-if、v-else-if、v-else怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“vue中v-if、v-else-...
      99+
      2024-04-02
    • vue中的v-show,v-if,v-bind的使用示例详解
      目录vue第四课:v-show,v-if,v-bind的使用1,v-show指令2,v-if指令3,v-bind指令vue第四课:v-show,v-if,v-bind的使用 1,v-...
      99+
      2023-05-14
      vue v-show vue v-if vue v-bind
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作