wxParse
微信小程序富文本解析
原因
由于原作者仓库 wxParse 不再维护,我们项目中商品信息展示又是以wxParse这个用做富文本解析的;
于是乎,决定采用 递归Component 的方式对其进行重构一番;
原项目使用的 template
模板的方式渲染节点,存在以下问题:
-
节点渲染支持到12层,超出会原样输出
html
代码; -
每一层级的循环模板都重复了一遍所有的可解析标签,代码十分臃肿。
-
li
标签不支持ol
有序列表渲染(统一采用的是ul
无序列表),a
标签无法实现跳转,也无法获取点击事件回调等等; -
节点渲染没有绑定
key
值,一是在开发工具看到一堆的warning
信息(看着十分难受),二是节点频繁删除添加,无法比较key值
,造成dom
节点频繁操作。
功能标签
- 目前该项目已经可以支持以下标签的渲染:
- 支持 npm包 引入
npm install --save wx-minicomponent
使用
- 原生组件使用方法
-
克隆 项目 代码,把 components目录 拷贝到你的小程序根目录下面;
-
在你的 page页面 对应的
json
文件引入wxParse
组件
{
"usingComponents": {
"wxParse": "/components/wxParse/wxParse"
}
}
- 组件调用
<wxParse nodes="{{ htmlText }}" />
- npm组件使用方法
- 安装组件
npm install --save wx-minicomponent
-
小程序开发工具的
工具
栏找到构建npm
,点击构建; -
在页面的 json 配置文件中添加
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}}" />
参数文档
- wxParse:富文本解析组件
参数 | 说明 | 类型 | 例子 |
---|---|---|---|
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 | |
… |
- highLight:代码高亮解析组件
参数 | 说明 | 类型 | 例子 |
---|---|---|---|
codeText | 原始高亮代码字符 | String | “var num = 10;” |
language | 代码语言类型 | String | 可选值:“javascript/typescript/css/xml/sql/markdown” |
提示:如果是html语言,language的值为xml
- wxAudio:仿微信公众号文章音频播放组件
参数 | 说明 | 类型 | 例子 |
---|---|---|---|
title | 标题 | String | “test” |
desc | 副标题 | String | “sub test” |
src | 音频地址 | String |
示例展示
- 富文本解析
- html文本解析实例
- markdown文本解析实例
- 代码高亮
更新历史
- 2020-5-31
- 迁移utils目录到wxParse目录下;
- 富文本增加markdown文本解析支持;
-
2020-5-21: 富文本组件image标签添加loading过渡态,优化图片加载体验
-
2020-5-17: 完善组件参数文档,增加wxParse对audio标签标题,副标题的解析功能
-
2020-5-13: 增加css,html,ts,sql,markdown代码高亮提示支持
-
2020-5-6: 增加图片预览功能
href点击没反应啊老铁
大佬,现在可以支持解析完成的回调不
这个现在还可以用吗 支持go语言代码高亮吗?
只能用 这个符号包裹才能正常显示么?
你好,请问支付宝小程序是不是不支持。以前的原作者的正常解析用这个解析报错
大佬能给个解析完成 的回调嘛
测试
求问大佬,用这个组件直接解析一个URL该怎么处理?
我有些渲染出来的是这种,怎么解决
为什么我的图片渲染不出来
继俄罗斯上市轰动全球,全球体验营嗨FUN六大城市之后,中国品牌首款全球车哈弗F7又在全球展开“限量发行”攻势。9月19日,哈弗F7周年限量版在北京长城汽车品牌体验中心荣耀上市。哈弗F7周年限量版拥有1个专属数字、2大智能升级、3大专属定制特征,售价15.37万元。它将以线上哈弗商城及京东旗舰店为主销渠道,全球限量发售777台,让用户尊享专属荣耀。
</p>
<p>
<img src="http://i0.qichangv.com/content/2019-11-13/076d7e49-c418-4df8-b088-bf26353a078a.jpg"/>
</p>
<h5>
哈弗F7周年限量版哈弗F7周年限量版哈弗F7周年限量版哈弗F7周年限量版
</h5>
<video class="edui-faked-video video-js video-js" controls="" preload="none" width="420" height="280" src="https://hwpobscdn.yunshicloud.com/onair/vcloud/5b45a16325eca3c6f7050411/db15929d1ea7fb17ad75a73120cd20e3.mp4?mid=5caef84b25eca3b7de30ae47">
<source src="https://hwpobscdn.yunshicloud.com/onair/vcloud/5b45a16325eca3c6f7050411/db15929d1ea7fb17ad75a73120cd20e3.mp4?mid=5caef84b25eca3b7de30ae47" type="video/mp4"/>1
</video>
<h4>
创变,为独一无二的你专属定制
</h4>
<p>
<img src="http://i0.qichangv.com/content/2019-11-13/9390dd5f-2ad6-4e64-a2a4-1d338f7248e4.jpg"/>
</p>
<p>
哈弗F7是哈弗品牌年轻化战略转型的集大成者,汇聚哈弗全球研发实力,整合世界一流资源精心智造而成。今年6月,哈弗F7在俄罗斯上市以后,从中国到海外,从欧洲到北美,哈弗F7迅速爆红,不仅获中俄两国元首签名,作为大国外交新名片走进克里姆林宫,而且还登上纽约时代广场大屏,站在了世界的十字路口,成为了中国品牌的骄傲。
</p>