小程序解析html之富文本插件wxParse
近期,开发小程序时,遇到后台给我返回了一串html代码,需要我这边来解析,头疼了好久,网上找资料找了变天,终于找到wxParse,然而看到的都是针对于页面中有单个html或者固定数据的,我现在的问题是,后台给我返回许多条数据,每一条数据中都有一串html代码需要解析。
说到这儿,就先来说说wxParse的基本用法吧。
首先引入必要的文件。
(1)、在需要用到wxParse的js文件中引入wxParse.js文件、
1 | let wxParse = require( "../../wxParse/wxParse.js" ); |
(2)、在.wxss文件中引入wxParse.wxss文件。
@import "../../wxParse/wxParse.wxss";
假如现在有这样一个例子,const article = '<span align="center">抢<font color="red">7</font>元券后,入耳式耳机只要<font color="red">5.6</font>元!!安卓手机都通用的~</span>'
那么在相应的js文件中就可以这样写
wxParse.wxParse('article', 'html', atricle, this,0)
(3)、还没完,还得在相应的.wxml文件中引入wxParse.wxml模板文件。用法如下:
<import src="../../wxParse/wxParse.wxml"></import> // 在需要用到富文本解析的地方使用如下,此处data中的article为绑定的数据名 <template is="wxParse" data="{{wxParseData:article.nodes}}"></template>
此处盗用一张图。
现在,回到博文开头说的问题,如何解析多条html代码,这时候可能需要用到wxParse插件中的另一个文件,即html2json.js文件。
将上面的第一步换成如下:
1 | let wxParse = require( "../../wxParse/html2json.js" ); |
例如现在有这样一组数据:
let goods_list = [ { "reward_price": 0.35, "self_reward_price": 0.52, "dto_desc": "我来推荐", "mall_des": "<p>进店铺领<font color=\"red\">5</font>元,无门槛</p>" }, { "reward_price": 0.35, "self_reward_price": 0.52, "dto_desc": "我来推荐", "mall_des": "<p>进店铺领<font color=\"red\">5</font>元,无门槛</p>" }, { "reward_price": 0.35, "self_reward_price": 0.52, "dto_desc": "我来推荐", "mall_des": "<p>进店铺领<font color=\"red\">5</font>元,无门槛</p>" } ]
这里我的做法是,先初始化一个空数组arr,用来存放后面需要解析的富文本。具体做法是:
let malldes_list = [] let curPage = this.data.pageNum - 1 // pageNum表示当前页码,从1开始。每次获取完数据不要忘了将pageNum + 1 goods_list.forEach(function (item, index) { malldes_list[index] = wxParse.html2json(item.mall_des, 'returnData') }) this.setData({ ['mallDesList[' + curPage + ']']: malldes_list,
['productList[' + curPage + ']']: goods_list,
pageNum: this.data.pageNum + 1 })
现在上面的第3条就可以这样来写:
// 列表页也涉及到分页,使用的二维数组。所以需要使用wx:for嵌套,在需要用到富文本解析的地方用上template模板。 <block wx:for="{{productList}}" wx:for-item="arrItem" wx:for-index="arrIndex" wx:key="arrIndex"> <block wx:for="{{arrItem}}" wx:for-item="item" wx:for-index="index" wx:key="item.goods_id"> <template is="wxParse" data="{{wxParseData:mallDesList[arrIndex][index].nodes}}"></template> </block> </block>
啰嗦了半天,搞定了。
最后,发下我的wxParse包含了那些文件:
作者:江峰★
出处:http://www.cnblogs.com/jf-67/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2017-02-22 javascript之事件监听
2017-02-22 常见的兼容性问题