v-show 与 v-if
1. v-show 与 v-if 的共同点
二者都是 Vue 中用于控制 DOM 元素显示 / 隐藏的指令,都可以根据表达式的布尔值决定元素是否展示。
2. v-show 与 v-if 的区别
| 维度 | v-show | v-if |
|---|---|---|
| 渲染方式 | 始终渲染 DOM,通过display: none控制隐藏 |
条件为false时,不渲染 DOM 到页面 |
| 切换开销 | 切换时仅修改 CSS,开销小 | 切换时会销毁 / 重建 DOM,开销大 |
| 初始渲染开销 | 初始渲染需渲染 DOM,开销略大 | 条件为false时不渲染,初始开销小 |
| 支持场景 | 不能用于<template>标签 |
可以用于<template>标签(分组渲染) |
3. v-show 与 v-if 的原理分析
- v-show:编译后会给元素添加内联样式
display: [条件? 'block' : 'none'],DOM 元素始终存在于文档流中。 - v-if:编译时会根据条件生成条件渲染的代码块,条件为
false时,对应的 DOM 节点不会被创建(或会被从 DOM 树中移除)。
4. v-show 与 v-if 的使用场景
- v-show:适用于切换频繁的元素(如标签页内容、弹窗开关),利用低切换开销提升性能。
- v-if:适用于切换频率低、或初始条件为 false 且不需要渲染 DOM的场景(如权限控制的内容、页面初始化时不需要显示的模块),避免不必要的 DOM 渲染。



