02-Vue中的v-show和v-if

news/2024/10/22 17:23:02/

前言

在这里插入图片描述

一、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:none,dom元素依旧还在。v-if显示隐藏是将dom元素整个添加或删除

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

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

  • v-show 由false变为true的时候不会触发组件的生命周期
  • v-if由false变为true的时候,触发组件的beforeCreate、create、beforeMount、mounted钩子,由true变为false的时候触发组件的beforeDestory、destoryed方法

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

v-show与v-if原理分析

大致流程如下

  • 将模板template转为ast结构的JS对象
  • 用ast得到的JS对象拼装render和staticRenderFns函数
  • render和staticRenderFns函数被调用后生成虚拟VNODE节点,该节点包含创建DOM节点所需信息
  • vm.patch函数通过虚拟DOM算法利用VNODE节点创建真实DOM节点

v-show原理

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

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

export const vShow: ObjectDirective<VShowElement> = {beforeMount(el, { value }, { transition }) {el._vod = el.style.display === 'none' ? '' : el.style.displayif (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 等条件需要处理
返回一个node节点,render函数通过表达式的值来决定是否生成DOM

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

v-if 与 v-show 都能控制dom元素在页面的显示
v-if 相比 v-show 开销更大的(直接操作dom节点增加与删除)
如果需要非常频繁地切换,则使用 v-show 较好
如果在运行时条件很少改变,则使用 v-if 较好


http://www.ppmy.cn/news/368434.html

相关文章

局域网计算机设备分类,小白指南——三种常见无线局域网设备类型

对于无线局域网的使用现在已经是很广泛的了&#xff0c;那么对于搭构无线局域网来说你是否清楚呢&#xff1f;那么本文主要介绍的是相关的无线局域网设备类型都有哪些。知识很简单&#xff0c;希望能让不太熟悉的朋友有所了解。 在无线局域网里&#xff0c;常见的无线局域网设备…

2、认识常见网络设备

交换机简介&#xff1a; 交换机(Switch)是一种基于MAC&#xff08;网卡的硬件地址&#xff09;识别。在网络中&#xff0c;交换机是一种硬件设备&#xff0c;用于过滤和转发网络数据包&#xff0c;从一个网络设备&#xff08;交换机、路由器、计算机、服务器等&#xff09;到另…

计算机连接无线网络的步骤,台式电脑连无线网步骤

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 台式电脑连无线网步骤如下&#xff1a; 1、先用网线连接台式电脑的物理网卡接口上&#xff0c;网线另一端连接路由器的任意一个LAN口&#xff1b; 2、一般情况下路由器默认的IP是19…

浅谈无线设备的校准

原文地址&#xff1a;http://blog.sina.com.cn/s/blog_664b94ea0100htvv.html 当前无线通讯是个潮流&#xff0c;GSM手机、cdma手机、wcdma手机、WLAN的研发、生产如火如荼&#xff0c;在这些无线设备的研发、生产中都有校准&#xff0c;其意义和目的何在&#xff1f; 大批量生…

移动通信网络规划:无线设备参数

无线网络规划设计中&#xff0c;规划设计人员必须了解清楚各厂商的无线基站设备的外形尺寸和性能参数才能进行合理的设计&#xff0c;从而保证移动通信工程建设项目的顺利实施和达到预期的建网指标。 1、LTE基站设备的一些相关参数 4G网络中无线基站设备主要包括BBU、RRU和天…

78、无线网络设备知识大汇总,值得收藏学习!

1、什么是AP? 2、什么是AC? 3、什么是POE供电,什么是POE交换机? 4、什么是Portal认证? 5、什么是无缝漫游? 6、部署一个无线工程都需要哪些软硬件? 7、AP的功率是不是越大越好? 8、在一个大型无线工程内,关键的点和最需要注意的地方是什么? 一、什么是AP AP-…

Java 中的异常处理——后端必不可少的编程技术

Java 中的异常处理——后端必不可少的编程技术 什么是异常&#xff1f;异常处理基础捕获异常finally 子句在方法中声明异常异常处理的最佳实践结论 前言 在计算机编程中&#xff0c;每个程序员都可能会遇到不同的程序异常。异常是指程序在运行期间的意外情况或错误&#xff0c…

比亚迪海豹冠军版将于5月10日上市,起售价优惠2万元

车控快讯&#xff08;文/每日一CHEK&#xff09;比亚迪海豹冠军版将于5月10日上市&#xff0c;起售价优惠2万元&#xff0c;标配苹果NFC车钥匙&#xff0c;DiLink功能优化&#xff0c;具备更好的行车便利性和人性化。车型提供单电机后驱、双电机四驱动力系统&#xff0c;最大功…