在微信小程序中使用富文本转化插件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,如需转载请自行联系原博主。

时间: 2024-09-15 04:12:36

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

微信小程序中使元素占满整个屏幕高度实现方法_JavaScript

微信小程序中使元素占满整个屏幕高度实现方法 在项目中经常要用到一个容器元素占满屏幕高度和宽度,然后再在这个容器元素里放置其他元素. 宽度很简单就是width:100% 但是高度呢,我们知道的是height:100%必须是在父元素的高度给定了的情况下才可以. 以前我的做法是用js获取屏幕的高度,然后将其赋值给height, 屏幕高度在网页中为:window.innerHeight; 在微信小程序中则需要调用wx.getSystemInfo接口,然后通过setData赋值 但是显然通过js来进行的,

微信小程序初使心得【微信小程序快速入门】

摘要: 2016年推出微信小程序,时至今日,历经几个版本的更新,已形成了相对实用和稳定的服务平台.本文简单的介绍了微信小程序的入门用法,今后会继续关注和实践.           2016年推出微信小程序,时至今日,历经几个版本的更新,已形成了相对实用和稳定的服务平台.本文简单的介绍了微信小程序的入门用法,今后会继续关注和实践.      2017年,春节刚过,想来,已经过了三四个工作日.接下来,期待的莫过于,十五的元宵. 近日,在工作闲暇之余,阅读了一些关于微信小程序的文章,忍不住,想动手试他

开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及后期处理过程,包括证书的IIS端口绑定,以及解决""小程序要求的 TLS 版本必须大于等于 1" 的问题. 1.证书申请及成功的后续处理 小程序的配置要求我们必须在网站提供443端口服务,需要加入HTTPS证书,这种证书可以从云服务商上购买,如腾讯云.阿里云上的云服务器后台都提供

微信小程序中使用Fly 发起http请求

微信小程序的 javascript运行环境和浏览器不同,页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件,JsCore中也没有 XmlhttpRequest对象,所以jquery .zepto.axios这些在小程序中都不能用,而此时,正是 fly 大显身手的时候. 您需要在 https://unpkg.com/flyio/dist/ 或 https://github.com/wendux/fly/tree/ma

微信小程序中单位rpx和rem的使用_javascript技巧

前言 这篇文章主要给大家讲解了rpx和rem应用于微信小程序,如果你还没有入门,建议先从下面看起      微信小程序官方文档      >web app变革之rem      >rpx单位官方文档      >rpx单位基础介绍 如果看完上面几篇文章,我们开始进入正题吧~~ 一.rem的使用 1) js中导入下面这段代码 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationcha

如何在eclipse rcp中使用富文本编辑器(rich editor)

使用eclipse rcp开发自己的应用程序时,经常需要使用到格式文本的编辑与展示.但在SWT/JFACE组件中并未提供合适的组件来完成此任务,Text与我们的要求相差甚远.我的OA系统中公文的正文部分需要一个合适的rich editor来完成此任务. 于是蛮世界的寻找适合的java rich editor组件来完成这个需求,最后寻得两个比较容易在eclipse rcp中采用的技术方案,这两个方案我都在我的系统中应用过 1.使用ekit组件,ekit是不多的开源java rich editor组

微信小程序实现博客园文章阅读功能

在微信小程序开发中,我们可以根据不同的业务场景,开发不同的业务应用,可以基于自身域名服务接口,也可以基于第三方的域名接口进行处理(如果被禁用除外),本篇随笔介绍使用小程序来实现我博客(http://wuhuacong.cnblogs.com)的文章阅读功能,这个小程序主要用来介绍使用介绍基于Javascript的正则表达式的处理应用,和常规在C#里面使用正则表达式有一些差异,因此可以作为后续使用正则表达式处理业务数据的一个练兵吧. 1.Request接口合法域名配置 一般情况下,我们知道微信的R

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

微信小程序结合后台数据管理实现商品数据的动态展示、维护

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,本篇随笔介绍微信小程序结合后台数据管理实现商品数据的动态展示.维护,介绍如何实现商品数据在后台管理系统中的维护管理,并通过小程序的请求Web API 平台获取JSON数据在小程序界面上进行动态展示. 1.整体性的架构设计 我们整体性的架构设计,包含一个Web管理后台.一个Web API统一接口层.当然还有数据库什么,另外还有一个小程序客户端.整个架构体系还是以我之前随笔介绍的<整合微信小程序的Web API接口层的架