首页 > 其他分享 >[Vue] v-html、v-show、v-if 的区别

[Vue] v-html、v-show、v-if 的区别

时间:2024-09-18 09:52:08浏览次数:10  
标签:Vue DOM 元素 html HTML show

v-if

作用:根据条件动态创建或销毁 DOM 元素。

原理v-if 实际上是按需渲染的,它会根据表达式的真假值来决定是否在 DOM 树中插入或移除元素。如果条件为 false,该元素不会存在于 DOM 中。

性能:因为 v-if 会真正地添加或移除元素,因此它在初次渲染时的开销较大,特别是当需要频繁切换时会有更多的 DOM 操作。但它在初始渲染时没有不必要的元素开销,适合那些在条件变化不频繁时使用。

核心机制

  1. Vue 在渲染时会通过观察条件表达式,决定是否在虚拟 DOM 中创建或删除对应的节点。
  2. 当条件改变时,Vue 会进行比较,更新真实的 DOM 树,插入或删除元素。

v-show

作用:根据条件控制元素的可见性,但不会真正移除或添加 DOM 元素。

原理v-show 通过简单的 CSS 样式 (display: none) 来控制元素的显示或隐藏。元素始终存在于 DOM 中,Vue 只是在条件为 false 时将其隐藏。

性能:相比 v-ifv-show 切换开销较小,因为它不会引起 DOM 的增删操作,只是修改样式。适合频繁切换显示状态的场景。

核心机制

  1. Vue 只在第一次渲染时插入元素,不论条件表达式是否为 true
  2. 随着条件改变,Vue 仅仅通过修改元素的 display 样式来控制其可见性。

v-html

作用:将原始的 HTML 字符串插入到元素中,并渲染为实际的 HTML 内容。

原理v-html 会将指定的 HTML 字符串作为内联内容插入到元素中。注意,使用 v-html 会替换掉元素的原有内容。

安全性:因为它会将 HTML 字符串直接插入到页面中,因此容易导致 XSS 攻击(跨站脚本攻击)。使用时需要确保内容的安全性。

核心机制

  1. Vue 会监控传递给 v-html 的表达式,并在值更新时直接将该 HTML 字符串插入到元素的 innerHTML 属性中。
  2. 虽然 Vue 对表达式的值会进行响应式处理,但插入的 HTML 本身不会被 Vue 编译为模板,因此不会有响应式绑定。

标签:Vue,DOM,元素,html,HTML,show
From: https://www.cnblogs.com/Himmelbleu/p/18417968

相关文章