当前位置: 首页 > web >正文

Vue:显示数据

Vue 提供了两种直接操作文本内容的方式:v-textv-html。它们都能将数据渲染到页面上,但处理方式有本质区别。通过代码示例理解它们的特性和使用场景。


v-text:纯文本输出

与插值表达式 {{ }} 完全等价,将数据作为纯文本输出。适合常规内容展示。

<template><div><!-- 等价于 {{ message }} --><p v-text="message"></p><!-- 会忽略 HTML 标签 --><p v-text="rawHtml"></p>  <!-- 页面显示 <b>Hello</b> --></div>
</template><script>
export default {data() {return {message: "普通文本",rawHtml: "<b>Hello</b>"};}
};
</script>

v-html:原始 HTML 渲染

解析数据中的 HTML 标签并渲染为真实 DOM。适合需要动态生成 HTML 的场景,但必须谨慎使用。

<template><div><!-- 渲染粗体文字 --><p v-html="rawHtml"></p>  <!-- 显示 Hello(加粗) --><!-- 动态生成内容 --><div v-html="dynamicContent"></div></div>
</template><script>
export default {data() {return {rawHtml: "<b>Hello</b>",dynamicContent: "<span style='color: red;'>警告</span>"};}
};
</script>

安全风险示例

当使用 v-html 渲染不可信内容时,会导致 XSS 攻击:

<template><div><!-- 假设用户输入恶意内容 --><div v-html="userInput"></div></div>
</template><script>
export default {data() {return {// 模拟用户输入的恶意脚本userInput: "<script>alert('你的信息被盗了!')</script>"};}
};
</script>

此时页面会执行脚本弹窗。实际开发中,必须对 v-html 的内容进行过滤或消毒。


两者对比

特性v-text / {{ }}v-html
输出类型纯文本原始 HTML
安全性自动转义 HTML 标签直接执行 HTML/JS
性能更高较低(需解析 DOM)
适用场景普通文本、数值富文本、可信 HTML 片段
http://www.xdnf.cn/news/6250.html

相关文章:

  • HTML 颜色全解析:从命名规则到 RGBA/HSL 值,附透明度设置与场景应用指南
  • Flutter - UIKit开发相关指南 - 线程和异步
  • Seed1.5-VL:高效通用的视觉-语言基础模型
  • leetcode - 滑动窗口问题集
  • Qt 自定义槽 + 自定义信号(9)
  • 《数据库原理》部分习题解析1
  • 使用Haproxy搭建高效Web群集的完整指南
  • MATLAB中heatmap函数
  • 基于开源链动2+1模式AI智能名片S2B2C商城小程序的低集中度市场运营策略研究
  • RHCE认证通过率
  • LeetCode Hot100 (1/100)
  • 家庭宽带的内网穿透实践
  • 数学实验(Matlab符号运算)
  • 面试篇: Redis(持续更新)
  • vue3基础学习 [简单标签] (vscode)
  • More Effective C++:改善编程与设计(上)
  • Redis内存淘汰策略和过期键删除策略有哪些?
  • Flutter在键盘的上方加一个完成按钮
  • JAVA异常体系
  • Linux proc文件系统 内存影射
  • YOLO11解决方案之热力图探索
  • 二分查找的边界问题
  • KUKA机器人中断编程3—暂停功能的编程
  • Selenium-Java版(环境安装)
  • fio 命令在 Linux 系统中的应用示例
  • Android锁
  • android studio导入项目
  • json-server的用法-基于 RESTful API 的本地 mock 服务
  • jQuery知识框架
  • Spring Cloud Gateway 聚合 Swagger 文档:一站式API管理解决方案