在微信小程序中使用富文本转化插件wxParse

简介:

在微信小程序中我们往往需要展示一些丰富的页面内容,包括图片、文本等,基本上要求能够解析常规的HTML最好,由于微信的视图标签和HTML标签不一样,但是也有相对应的关系,因此有人把HTML转换做成了一个富文本转化插件wxParse,方便我们使用,前人种树后人乘凉,我们使用它来解析HTML就很方便了,这对于我们在后端已经完成的一些HTML内容,展示在小程序里就非常不错。

这个插件的Github地址如下:wxParse-微信小程序富文本解析组件,官方称它支持支持HTML及markdown解析,我这里主要用在小程序端解析HTML内容。

1、硬编码HTML测试

首先我们根据官方网站说明,下载内容后,复制文件夹wxParse到项目目录中(这里放在utils目录中),如下所示。

- wxParse/
  -wxParse.js(必须存在)
  -html2json.js(必须存在)
  -htmlparser.js(必须存在)
  -showdown.js(必须存在)
  -wxDiscode.js(必须存在)
  -wxParse.wxml(必须存在)
  -wxParse.wxss(必须存在)
  -emojis(可选)

然后在使用的JS文件中引入文件。

// 引入对HTML内容解析的处理类
var WxParse = require('../../utils/wxParse/wxParse.js');

接着在视图中引入样式文件,如下所示

//在使用的Wxss中引入WxParse.css,可以在app.wxss
/**app.wxss**/
@import "./utils/wxParse/wxParse.wxss";

接着在视图文件中需要引入对应的模板文件,如下所示

// 引入模板
<import src="你的路径/wxParse/wxParse.wxml"/>
//这里data中article为bindName
<template is="wxParse" data="{{wxParseData:article.nodes}}"/>

一般我们会对模板的展示进行一定的调整,如下是我实际项目的界面代码

<!--pages/company/index.wxml-->
<import src="../../utils/wxParse/wxParse.wxml"/> 
<view class="index">
    <view class="news">
        <view class="news-item line">
            <view class="news-details-content wxParse">
                <template is="wxParse" data="{{wxParseData:content.nodes}}"/>
            </view>
        </view>
    </view>
</view>

前面我们在JS文件里面只是做了文件的引用,为了实现数据的展示,我们需要插件wxParse对它进行数据绑定处理,我们为了方便,先定义一个HTML文档内容在本地,方便展示处理。

在逻辑JS文件里面,我们先包含这个文件进来,如下代码所示。

// 引入内置HTML对象文件
const company = require("./company.js");

然后我们先来测试内置HTML的转换处理。

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
      var that = this;

      //使用内置HTML展现
      var data = { url: company.url, image: company.image, content: company.content };
      this.setData({
          item: data
      }); 
      WxParse.wxParse('content', 'html', data.content, that, 25);

 解析得到界面效果如下所示。

2、动态获取HTML并展示

上面我们是通过内置HTML文件的方式,然后把它包含进来,对内容进行转换显示,实际情况下,我们一般需要对内容进行动态化处理,通过请求服务器端的URL获取内容,并进行展示,如下代码所示。

      //使用Comprise的封装函数展现
      var url ='http://localhost:27206/api/Framework/Information/FindByCode';
      var companyurl = "http://www.iqidi.com";
      var json = {code: 'company'};
      app.utils.get(url, json).then(res=> { 
        var data = { url: companyurl, image: res.Picture, content: res.Content };
        that.setData({
          item : data
        });
        WxParse.wxParse('content', 'html', data.content, that, 25);
      });

 其中的app.utils.get 是对wxRequest的封装处理(使用了Promise插件),如下所示。

//封装Request请求方法
function requst(url,method,data = {}){
  wx.showNavigationBarLoading()
  data.method = method
  return new Promise((resove,reject) => {
    wx.request({
      url: url,
      data: data,
      header: {},
      method: method.toUpperCase(), // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
      success: function(res){
        wx.hideNavigationBarLoading()
        resove(res.data)
      },
      fail: function(msg) {
        console.log('reqest error',msg)
        wx.hideNavigationBarLoading()
        reject('fail')
      }
    })
  })
}

另外我们服务器返回的JSON如下所示

这个后台是采用C#的MVC后台生成的JSON,具体后台代码如下所示。

        /// <summary>
        /// 通过代码获取对应的文章内容
        /// </summary>
        /// <param name="id">产品ID</param>
        /// <returns></returns>
        [HttpGet]
        public ExpandoObject FindByCode(string code)
        {                     
            //如果需要修改字段显示,则参考下面代码处理
            dynamic obj = new ExpandoObject();

            var info = baseBLL.FindSingle(string.Format("Code='{0}' AND IsDoc=0 ", code));
            if (info != null)
            {
                obj.ID = info.ID;
                obj.Title = info.Title;
                obj.Content = info.Content;
                obj.Picture = info.Picture;
                obj.Category = info.Category;
            }
            return obj;
        }

 解析得到界面效果和上面的一致。

   

以上就是使用富文本转化插件wxParse对HTML内容进行的转换实现,这些动态内容,我们可以利用网站后台进行动态的维护即可。

文章列表管理界面如下所示:

文章内容编辑界面如下所示

本文转自博客园伍华聪的博客,原文链接:在微信小程序中使用富文本转化插件wxParse,如需转载请自行联系原博主。

目录
相关文章
|
4月前
|
算法 Java API
用录像代替视频聊天,虚拟视频聊天软件微信QQ, 微信第三方插件虚拟视频插件
核心视频处理模块使用JavaCV实现视频捕获、特效处理和虚拟设备输出 Xposed模块通过Hook微信摄像头相关方法实现视频流替换
|
5月前
|
Shell 数据安全/隐私保护 Python
微信虚拟摄像头插件,QQ虚拟相机拍摄录像工具,替换虚拟视频聊天软件
完整的虚拟摄像头实现方案,包含多个模块的代码实现。这个项目可以模拟摄像头设备,并在微信/QQ视频
|
6月前
|
Android开发
微信自动发朋友圈脚本,定时发朋友圈插件群发,多账户发朋友圈批量工具
整的微信朋友圈自动发布功能,包含环境检查、界面元素定位、图片识别、异常处理等模块
|
4月前
|
Shell Android开发 Python
微信多开脚本,微信双开器脚本插件,autojs开源代码分享
AutoJS脚本实现安卓端微信多开,通过无障碍服务 Python脚本提供跨平台解决方案,自动检测微信安装路径
|
5月前
|
JSON 机器人 API
微信机器人自动回复插件,vx自动回复机器人脚本助手,python框架分享
这个微信机器人系统包含三个主要模块:主程序基于itchat实现微信消息监听和自动回复功能
|
5月前
|
Java 计算机视觉
微信虚拟视频聊天插件,QQ抖音快手虚拟摄像头工具,替换相机视频流java
实现包含了虚拟摄像头核心功能,可以捕获真实摄像头视频流,处理后输出到虚拟摄像头设备。
微信qq陌陌soul,虚拟视频聊天插件,xposed摄像头替换工具
包含三个核心模块:虚拟摄像头服务、视频处理引擎和Xposed框架集成。
|
5月前
|
监控 数据库 数据安全/隐私保护
微信自动抢红包永久免费软件, 自动抢红包软件微信,脚本插件抢红包【python】
该实现包含三个核心模块:主监控程序、数据库记录模块和配置模块。主程序使用itchat监听微信消息
|
5月前
|
Android开发 数据安全/隐私保护 Python
微信抢红包脚本安卓插件,微信xposed抢红包模块, magisk微信抢红包模块
这个代码实现了一个完整的微信抢红包自动化工具,包含红包检测、自动点击、日志记录等功能
|
5月前
|
消息中间件 人工智能 机器人
vx自动回复机器人,ai自动回复机器人,微信自动回复脚本插件
这个微信自动回复机器人包含主程序、配置管理、工具函数和单元测试模块。主程序使用itchat库实现微信登录和消息处理

热门文章

最新文章