推荐项目:微信小程序富文本解析-wxParse

本文介绍了一种用于小程序的富文本解析组件重构方案,解决了原有wxParse组件的局限性,如列表渲染、链接跳转及代码高亮等问题。通过递归组件方式,增强了对多种标签的支持,包括音频、图片、列表等,并实现了代码高亮功能。
摘要由CSDN通过智能技术生成

由于原作者仓库 wxParse 不再维护,我们项目中商品信息展示又是以wxParse这个用做富文本解析的;

于是乎,决定采用 递归Component 的方式对其进行重构一番;

原项目使用的 template 模板的方式渲染节点,存在以下问题:

  1. 节点渲染支持到12层,超出会原样输出 html 代码;

  2. 每一层级的循环模板都重复了一遍所有的可解析标签,代码十分臃肿。

  3. li标签不支持 ol 有序列表渲染(统一采用的是 ul 无序列表),a标签无法实现跳转,也无法获取点击事件回调等等;

  4. 节点渲染没有绑定 key 值,一是在开发工具看到一堆的 warning信息(看着十分难受),二是节点频繁删除添加,无法比较key值,造成 dom 节点频繁操作。

功能标签

  1. 目前该项目已经可以支持以下标签的渲染:

  • audio标签(可自行更换组件样式,暂时采用微信公众号文章的audio音乐播放器的样式处理)

  • ul标签

  • ol标签

  • li标签

  • a标签

  • img标签

  • video标签

  • br标签

  • button标签

  • h1, h2, h3, h4标签

  • 文本节点

  • 其余块级标签

  • 其余行级标签

  1. 支持 npm包 引入

npm install --save wx-minicomponent

使用

  1. 原生组件使用方法

  • 克隆 项目 代码,把 components目录 拷贝到你的小程序根目录下面;

  • 在你的 page页面 对应的 json 文件引入 wxParse 组件

{
  "usingComponents": {
    "wxParse": "/components/wxParse/wxParse"
  }
}
  • 组件调用

<wxParse nodes="{{ htmlText }}" />
  1. npm组件使用方法

  • 安装组件

npm install --save wx-minicomponent
  • 小程序开发工具的 工具 栏找到 构建npm,点击构建;

  • 在页面的 json 配置文件中添加 wxParse 自定义组件的配置

{
  "usingComponents": {
    "wxParse": "/miniprogram_npm/wx-minicomponent/wxParse"
  }
}
  • wxml 文件中引用 wxParse

<wxParse nodes="{{ htmlText }}" />

提示:详细步骤可以参考小程序的npm使用文档

  1. 补充组件:代码高亮展示组件使用

  • 在 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

示例展示

  1. 富文本解析

  • html文本解析实例

  • markdown文本解析实例

  1. 代码高亮

更新历史

  • 2020-5-31

  1. 迁移utils目录到wxParse目录下;

  2. 富文本增加markdown文本解析支持;

  • 2020-5-21: 富文本组件image标签添加loading过渡态,优化图片加载体验

  • 2020-5-17: 完善组件参数文档,增加wxParse对audio标签标题,副标题的解析功能

  • 2020-5-13: 增加css,html,ts,sql,markdown代码高亮提示支持

  • 2020-5-6: 增加图片预览功能

项目开源地址:

https://github.com/csonchen/wxParse

更多小程序推文

如何快速独立开发完复杂的小程序?

强烈推荐星标31k的小程序资源项目,资源很全!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值