RichText 富文本渲染器(1.3.3)
RichText 组件是一个用于展示富文本内容的 Vue 组件,支持 HTML 内容的渲染、净化以及图片预览功能。
基础用法
使用content
属性传入富文本内容,组件会自动渲染。
<template>
<ym-rich-text :content="htmlContent" />
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { YmRichText } from 'guyan-ym-ui';
import 'guyan-ym-ui/dist/index.css';
const htmlContent = ref('<p>这是一段富文本内容。</p>');
</script>
净化HTML内容
使用is-clean
属性开启HTML内容的净化功能,防止XSS攻击。通过config
属性可以自定义净化规则。
TIP
净化HTML内容需要引入DOMPurify
库,提供了一套默认的净化配置规则,可以自定义,具体规则请参考DOMPurify。
净化后:
未净化:
<template>
<p>净化后:</p>
<ym-rich-text :content="htmlContent" :isClean="true" />
<p>未净化:</p>
<ym-rich-text :content="htmlContent" :isClean="false" />
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { YmRichText } from 'guyan-ym-ui';
import 'guyan-ym-ui/dist/index.css';
const htmlContent = ref(`<p>净化后的内容: <a href="javaScript:alert('恭喜你被诈骗了100元,以后长点心吧傻孩子!!!')">点击我领福利</a><strong>Safe Content</strong></p>`);
</script>
图片预览
使用is-img-preview
属性开启图片预览功能,点击富文本中的图片时会自动弹出大图。使用preview-config
属性可以自定义图片预览的配置。
<template>
<ym-rich-text :content="htmlContent" :isImgPreview="true" />
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { YmRichText } from 'guyan-ym-ui';
import 'guyan-ym-ui/dist/index.css';
const htmlContent = ref('<p>点击图片预览: <img src="https://jeek-space-blog.top:3000/images/article/6c372c58e9f76a1059cec97dae6b84d7.jpeg" alt="example" /></p>');
</script>
RichText API
Props
属性名 | 描述 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
content | 富文本内容 | string | - | - |
config | DOMPurify 配置 | object | - | - |
isClean | 是否净化HTML内容 | boolean | - | true |
isImgPreview | 是否开启图片预览 | boolean | - | false |
previewConfig | 图片预览配置 | ImageViewerProps | - | - |
Emits
事件名 | 描述 | 参数类型 |
---|---|---|
click | 点击富文本内容时触发 | MouseEvent |
Expose
属性名 | 描述 |
---|---|
ref | 组件的根元素引用 |
normalizationHtml | 修改富文本渲染器与内容 |
cleanContent | 净化HTML内容的方法,返回净化后的TrustedHTML对象 |
dompurifyIstance | DOMPurify 实例 |