由于原作者仓库 wxParse 不再维护,我们项目中商品信息展示又是以wxParse这个用做富文本解析的;
于是乎,决定采用 递归Component 的方式对其进行重构一番;
原项目使用的 template 模板的方式渲染节点,存在以下问题:
html 代码;li标签不支持 ol 有序列表渲染(统一采用的是 ul 无序列表),a标签无法实现跳转,也无法获取点击事件回调等等;key 值,一是在开发工具看到一堆的 warning信息(看着十分难受),二是节点频繁删除添加,无法比较key值,造成 dom 节点频繁操作。audio音乐播放器的样式处理)npm install --save wx-minicomponent
json 文件引入 wxParse 组件{
"usingComponents": {
"wxParse": "/components/wxParse/wxParse"
}
}
<wxParse nodes="{{ htmlText }}" />
npm install --save wx-minicomponent
工具 栏找到 构建npm,点击构建;wxParse 自定义组件的配置{
"usingComponents": {
"wxParse": "/miniprogram_npm/wx-minicomponent/wxParse"
}
}
wxml 文件中引用 wxParse<wxParse nodes="{{ htmlText }}" />
提示:详细步骤可以参考小程序的npm使用文档
page的 json 文件里面引入 highLight 组件原生引入:
{
"usingComponents": {
"highLight": "/components/highLight/highLight"
}
}
npm组件引入:
{
"usingComponents": {
"highLight": "/miniprogram_npm/wx-minicomponent/highLight"
}
}
<highLight codeText="{{codeText}}" />
参数 | 说明 | 类型 | 例子 |
|---|---|---|---|
nodes | 富文本字符 | String | “<div>test</div>” |
language | 语言 | String | 可选:“html” | “markdown” (“md”) |
受信任的节点
节点 | 例子 |
|---|---|
audio | <audio title=“我是标题” desc=“我是小标题” src=“https://media.lycheer.net/lecture/25840237/5026279_1509614610000.mp3?0.1” /> |
a | <a href=“www.baidu.com”>跳转到百度</a> |
p | |
div | |
span | |
li | |
ul | |
ol | |
img | |
button | |
h1 | |
h2 | |
h3 | |
h4 | |
… |
参数 | 说明 | 类型 | 例子 |
|---|---|---|---|
codeText | 原始高亮代码字符 | String | “var num = 10;” |
language | 代码语言类型 | String | 可选值:“javascript/typescript/css/xml/sql/markdown” |
提示:如果是html语言,language的值为xml
参数 | 说明 | 类型 | 例子 |
|---|---|---|---|
title | 标题 | String | “test” |
desc | 副标题 | String | “sub test” |
src | 音频地址 | String |



项目开源地址:
https://github.com/csonchen/wxParse