在开发微信小程序时,你一定遇到过这个问题:后端返回的富文本 HTML 内容,无法直接在小程序里渲染(小程序不支持原生 <div>、<p>、<img> 等 HTML 标签)。
这篇文章就给大家整理小程序显示 HTML 的 3 种实用方案,包含官方推荐、开源组件、自定义解析,新手也能直接复制代码使用,覆盖绝大多数业务场景。
一、官方首选:小程序原生 rich-text 组件
微信小程序官方自带的 rich-text 富文本组件,零依赖、零引入、直接使用,是最简单、最稳定的方案,适合大部分基础 HTML 渲染。
1. 核心特点
- 无需安装任何插件 / 库
- 支持大部分常用 HTML 标签(
p/div/img/span/ul/li/a等) - 性能好,官方维护,无兼容性问题
- 不支持复杂 JS、内联样式有限制
2. 直接使用代码
WXML 文件
xml
<!-- 直接绑定 html 字符串即可 -->
<rich-text nodes="{{htmlContent}}"></rich-text>
JS 文件
javascript
运行
Page({
data: {
// 后端返回的 HTML 内容
htmlContent: `
<div style="color:red; font-size:16px;">
<p>这是一段富文本内容</p>
<img src="https://xxx.com/xxx.jpg" style="width:100%;">
<a href="https://www.baidu.com">点击跳转链接</a>
</div>
`
}
})
3. 注意事项
- 图片必须是 HTTPS 合法域名,且在小程序后台配置业务域名
- 不支持
<script>、<style>标签、iframe 等 - 行内样式大部分支持,Class 样式不生效
二、最强兼容:开源组件 wxParse(老项目必备)
wxParse 是小程序早期最火的 HTML 解析库,支持极复杂的富文本(表格、代码块、嵌套样式、音频、视频),现在依然大量用在老项目、复杂文章详情页。
1. 核心特点
- 支持 99% 的 HTML 标签和样式
- 支持图片预览、表格、代码块
- 社区成熟,问题好查
2. 使用步骤
① 下载文件
直接下载 wxParse 文件夹,放入小程序根目录
下载地址:wxParse GitHub
② 引入文件
在页面 js 顶部引入:
javascript
运行
// 根据你的路径调整
const WxParse = require('../../wxParse/wxParse.js');
在页面 wxss 引入样式:
css
@import "../../wxParse/wxParse.wxss";
③ WXML 使用
xml
<import src="../../wxParse/wxParse.wxml"/>
<template is="wxParse" data="{{wxParseData:article.nodes}}"/>
④ JS 渲染 HTML
javascript
运行
Page({
onLoad() {
let html = `
<h1>标题</h1>
<p>支持复杂样式、表格、图片</p>
<table><tr><td>表格内容</td></tr></table>
`;
// 参数:文章标识、html内容、this、图片自适应
WxParse.wxParse('article', 'html', html, this, 5);
}
})
三、现代高效:towxml 3.0(支持 Markdown + HTML)
如果你需要同时渲染 HTML 和 Markdown,towxml 是目前最好用的现代库,比 wxParse 更轻量、性能更好。
1. 核心特点
- 支持 HTML + Markdown 双解析
- 支持代码高亮、目录、锚点
- 体积小、适配新版小程序
2. 快速使用
- 下载 towxml 放入项目
- JS 引入并解析
javascript
运行
const Towxml = require('../../towxml/main');
const towxml = new Towxml();
Page({
data: {
article: ''
},
onLoad() {
let html = '<p>测试内容</p>';
this.setData({
article: towxml.toJson(html, 'html')
});
}
})
- WXML 使用
xml
<import src="../../towxml/towxml.wxml"/>
<template is="towxml" data="{{...article,base:''}}"/>
四、3 种方案怎么选?(直接照抄)
表格
| 方案 | 难度 | 适用场景 | 推荐度 |
|---|---|---|---|
| rich-text | 极低 | 简单文章、公告、纯文本 + 图片 | ⭐⭐⭐⭐⭐ |
| wxParse | 中等 | 复杂富文本、表格、代码、老项目 | ⭐⭐⭐⭐ |
| towxml | 中等 | HTML+Markdown、博客、文档 | ⭐⭐⭐⭐⭐ |
一句话总结:
- 简单需求 → 直接用 rich-text(官方原生)
- 复杂 HTML → 用 wxParse
- 要支持 Markdown → 用 towxml
五、常见坑与解决方案
- 图片不显示→ 必须是 HTTPS 域名,且在小程序后台配置
downloadFile域名 - 样式错乱→ rich-text 只支持行内样式,不支持 class
- 富文本太宽超出屏幕→ 给图片加
style="width:100%;height:auto;" - a 标签无法跳转→ rich-text 支持,需在
bindtap里手动处理跳转
总结
- 小程序不能直接渲染 HTML,必须用富文本组件解析
- 新手优先用 rich-text,零成本直接用
- 复杂 HTML 用 wxParse,Markdown 用 towxml
- 图片域名、样式格式是最常见的两个坑,提前处理即可
这就是小程序显示 HTML 的全部实用方案,你在开发中遇到的绝大多数富文本场景,用这三种方法都能完美解决。
正文完
可以使用微信扫码关注公众号(ID:xzluomor)