惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - bwteacher

mysql实用 mysql操作错误 fastadmin操作 fastadmin下的多级联动 CentOS7安装Python3.10环境 表单提交fastadmin form jdk-24及tomcat-11.0.9(解压版)安装配置 mermaid基于 JavaScript 的图表绘制工具 HbuilderX 小随笔 v-bind和v-model的区别 uniapp中@tap与@click点击事件的差异 PHP常用数学函数 距离-有这么多类 bootstrap.table汇总 selectpage汇总 jQuery没有匹配到任何内容,返回什么? js数组常用方法 thinkphp控制器名称命名相关 php常见错误码 ThinkPHP的join关联查询不使用默认的表前缀 阿里云虚拟主机创建https
v-if和v-show的区别
bwteacher · 2024-09-08 · via 博客园 - bwteacher

v-if和v-show是Vue.js中常用的指令,用于根据条件来控制元素的显示和隐藏。它们的区别主要体现在以下几个方面:

渲染方式

v-if是基于条件进行的“惰性渲染”,即只有在条件为真时才会渲染对应的组件或元素,而在条件为假时会直接移除对应的组件或元素。这意味着在条件为假时,相关的组件或元素的所有事件监听器和子组件都会被销毁,从而减少了内存的占用。

v-show则是通过CSS的display属性来控制元素的显示和隐藏。在条件为真时,元素的display属性会被设置为原来的值,从而显示元素;在条件为假时,元素的display属性会被设置为none,从而隐藏元素。因此,v-show并不会销毁元素,只是通过CSS来隐藏它们。

初始渲染开销

由于v-if是惰性渲染的,所以在初始渲染时,如果条件为假,相关的组件或元素将不会被渲染到DOM中。这样可以减少初始渲染时的开销,尤其是对于复杂的组件或元素。

而v-show则会在初始渲染时将所有元素都渲染到DOM中,只是通过CSS来控制其显示和隐藏。这意味着在初始渲染时,无论条件为真还是为假,相关的组件或元素都会被渲染到DOM中,可能会增加一些初始渲染的开销。

切换开销:

由于v-if在条件变为真时才会渲染对应的组件或元素,所以在条件切换时,会有一定的切换开销。因为切换时需要重新创建和销毁组件或元素,对应的事件监听器和子组件也会重新创建和销毁。

而v-show在条件切换时,只需要通过CSS来控制元素的显示和隐藏,不需要重新创建和销毁组件或元素,也不会影响对应的事件监听器和子组件。因此,在条件切换频繁的情况下,v-show的性能可能会优于v-if。

使用场景

如果需要在条件切换频繁的情况下,可以使用v-show来避免频繁的创建和销毁组件或元素,提高性能。

如果需要在条件切换较少的情况下,可以使用v-if来在条件为假时减少不必要的渲染,节省内存。

总结:

v-if和v-show的区别主要体现在渲染方式、初始渲染开销、切换开销和使用场景上。根据实际情况选择合适的指令可以提高应用的性能和用户体验。