vue3 如何渲染html标签

www.jswusn.com Other 2024-12-03 09:37:16 31次浏览

vue3 如何渲染html标签

在 Vue 3 中,如果你想渲染 HTML 标签而不是将它们作为纯文本显示,你需要确保这些 HTML 内容是安全的,以防止 XSS(跨站脚本)攻击。

Vue 提供了 v-html 指令来渲染元素内的 HTML。

下面是一个简单的例子展示如何使用 v-html 指令来渲染 HTML 字符串:

<template>
  <div id="app">
    <div v-html="unsafeHtml"></div>
  </div>
</script>

<script setup>
import { ref } from 'vue';

const unsafeHtml = ref('<p>Hello Vue!</p>');
</script>

在这个例子中,unsafeHtml 是一个包含 HTML 字符串的响应式属性。v-html 指令告诉 Vue 将这个字符串作为 HTML 渲染到 DOM 中。

需要注意的是,这里的变量名称为 unsafeHtml 是为了提醒我们直接渲染用户提供的数据可能会导致安全问题。

如果你的数据来源于不可信的源,你应该对其进行适当的净化处理。

可以使用类似 dompurify 这样的库来净化 HTML,确保不会执行任何恶意脚本。

例如,你可以这样使用 dompurify

<template>
  <div v-html="safeHtml"></div>
</template>

<script setup>
import { ref } from 'vue';
import { JSDOM } from 'jsdom';
import DOMPurify from 'dompurify';

const windowWithJSDOM = new JSDOM('').window;
DOMPurify.setConfig({ WINDOW: windowWithJSDOM });

const unsafeHtml = '<p>Hello, <b>world!</b></p>';
const safeHtml = ref(DOMPurify.sanitize(unsafeHtml));
</script>

在这个示例中,我们使用了 DOMPurify 来确保我们的 HTML 是安全的。

这很重要,因为直接使用 v-html 可能会带来安全风险。确保在生产环境中总是净化你的 HTML 数据。


技术分享

苏南名片

  • 联系人:吴经理
  • 电话:152-1887-1916
  • 邮箱:message@jswusn.com
  • 地址:江苏省苏州市相城区

热门文章

Copyright © 2018-2025 jswusn.com 版权所有

技术支持:苏州网站建设  苏ICP备18036849号