微信小程序开发——模板中加载html代码

2023-07-29,,

最新方法可以使用微信小程序提供的 rich-text (富文本)组件直接写解析html,详见 rich-text:

<rich-text class='f13 c_9' nodes="{{html}}"></rich-text>

其中 html 为后端返回的html代码格式数据,这里直接就可以解析,再也不需要像wxParse那样还需要引入插件。

虽然官方文档说nodes不推荐使用String类型,性能会有所下降(当然了,肯定要解析代码呀),建议使用nodes类型(节点列表),就是这样的:

<rich-text nodes="{{nodes}}" bindtap="tap"></rich-text>
Page({
data: {
nodes: [{
name: 'div',
attrs: {
class: 'div_class',
style: 'line-height: 60px; color: red;'
},
children: [{
type: 'text',
text: 'Hello&nbsp;World!'
}]
}]
},
tap() {
console.log('tap')
}
})

最初使用wxParse就是没注意到这个组件还支持String格式数据,通篇在介绍nodes这种用法。想想这种用法实在是有点反人类(吐槽下),如果我要嵌入解析html文档,为什么还要用节点列表的形式去写呢?如果我都能写出节点列表了,为什么不直接用wxml标签写呢?解析html主要就是解析服务器获取的html数据的呀,后端服务器获取的html数据我还要转换成Nodes?凌乱中......

总之,目前我还没想到什么情况下需要使用这种方式,即使使用String类型性能会有所下降,但总比我去解析html成nodes或者使用wxParse好吧,这就足够了。


小程序默认是不支持html格式的内容显示的,那可以通过wxParse来实现。

1) 下载wxParse:https://github.com/icindy/wxParse

2) 下载完成后将插件目录下的wxParse文件夹拷贝到项目目录下

3) 在app.wxss中导入wxParse的样式表:

@import "wxParse/wxParse.wxss";

4)在需要加载html代码的页面js文件中引用wxParse.js文件:

var WxParse = require('../../../wxParse/wxParse.js');

5)通过WxParse.wxParse的方法来设置html内容:

var htmlContent= "<h2>这里是Html内容</h2>"
WxParse.wxParse('detailHtml', 'html', htmlContent, this, 0);

6) 页面中引用模板

<import src="../../../wxParse/wxParse.wxml"/>
<template is="wxParse" data="{{wxParseData:htmlContent.nodes}}"/>

关于wxParse的应用与二次开发详见:https://github.com/icindy/wxParse

微信小程序开发——模板中加载html代码的相关教程结束。

《微信小程序开发——模板中加载html代码.doc》

下载本文的Word格式文档,以方便收藏与打印。