微信小程序如何显示富文本,类似v-html,rich-text

本文介绍了如何在微信小程序中解析和展示富文本内容,利用`<rich-text>`标签结合`nodes`属性实现HTML字符串的渲染。同时,提到了官方的注意事项,包括不推荐使用String类型以保持性能,以及`space`属性的三种值(ensp、emsp、nbsp)对空格解析的影响。通过示例展示了不同值下空格的表现,为空格处理提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、微信小程序需求,有一段富文本字符串需要解析并展示在页面上;

结构如下 :content
在这里插入图片描述

二、解决办法

一、用过vue 的都知道vue 有个 v-html 属性,可以准换html格式并且展示;
但是微信小程序提供的方法是一个新的标签【基础内容 /rich-text】(微信文档传送门) ;
使用方法很简单:

<view>
	<rich-text nodes="{{content}}"></rich-text>
</view>

在这里插入图片描述

二、属性只有两个

属性类型默认值必填说明最低版本
nodesarray/string[ ]节点列表/HTML String1.4.0
spacestring显示连续空格2.4.1

三、官方的注意事项

Bug & Tip
tip: nodes 不推荐使用 String 类型,性能会有所下降。
tip: rich-text 组件内屏蔽所有节点的事件。
tip: attrs 属性不支持 id ,支持 class 。
tip: name 属性大小写不敏感。
tip: 如果使用了不受信任的HTML节点,该节点及其所有子节点将会被移除。
tip: img 标签仅支持网络图片。
tip: 如果在自定义组件中使用 rich-text 组件,那么仅自定义组件的 wxss 样式对 rich-text 中的 class 生效。

三、对于 rich-text 属性 space 的感知:

space 有三个值,通过对比可以发现:
1、默认的 rich-text 是不会解析空格的;
2、加入其中任意一个值,都会将原有的空格内容解析出来;
3、为了不影响布局,尽量还是 space一个属性比较好;

说明
ensp中文字符空格一半大小
emsp中文字符空格大小
nbsp根据字体设置的空格大小
  • 以下是测试三个值的区别:

  • 0 不加space

在这里插入图片描述

  • 1 加入 emsp
    在这里插入图片描述
  • 2 加入 ensp
    在这里插入图片描述
  • 3 加入nbsp
    在这里插入图片描述
### 实现微信小程序类似 Vue.js `v-html` 的功能 在微信小程序中实现类似Vue.js 中 `v-html` 功能的方式主要依赖于第三方库的帮助,因为微信小程序本身并不直接支持 HTML 片段的渲染。通过使用 `WxParse` 库可以达到这一目的。 具体来说,在页面加载时获取到要解析的内容字符串之后,利用 `WxParse.wxParse()` 方法来完成HTML内容向WXML结构转换的工作[^3]: ```javascript var _this = this; // 假设 content 是从服务器端接收到的 HTML 字符串 let content = '<p>这是一个测试</p><img src="http://example.com/image.jpg"/>'; WxParse.wxParse('content', 'html', content, _this, 5); ``` 上述代码片段展示了如何初始化并调用 `wxParse` 函数来进行HTML转义操作。其中参数解释如下: - `'content'`: 绑定的数据名称; - `'html'`: 表明输入的是HTML格式; - `content`: 需要被解析的实际HTML字符串; - `_this`: 当前上下文环境(`Page`)实例; - `5`: 图片自适应时左右单边 padding,默认值为0;这里设置为了5作为例子说明该参数的存在。 需要注意的是,虽然这种方式能够满足基本需求,但在安全性方面可能存在隐患,因此建议开发者谨慎对待来自不可信源的数据,并做好相应的过滤措施以防止XSS攻击等问题的发生。 对于更复杂的应用场景,则可能需要考虑其他解决方案或优化现有方案的安全性和性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值