微信小程序 - 解析富文本插件版们

这篇具有很好参考价值的文章主要介绍了微信小程序 - 解析富文本插件版们。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、html2wxml 插件版

https://gitee.com/qwqoffice/html2wxml

申请使用注意事项

插件版本解析服务是由 QwqOffice 完成,存在不稳定因素,如对稳定性有很高的要求,请自行搭建解析服务,或在自家服务器上直接完成解析。对于有关插件版本不能使用/不能解析的提问,不作任何回答。

微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

效果

微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序
参考
小程序富文本解析 https://github.com/icindy/wxParse

PHP移植版highlight.js https://github.com/scrivo/highlight.php

PHP编写的Markdown解析器 https://github.com/erusev/parsedown

演示

扫码打开演示小程序

微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

小程序端用法

三种版本演示

三种版本演示所用的小程序源码均在demo目录中

(1) 插件版本准备

  1. 打开小程序管理后台,转到设置 - 第三方服务,点击添加插件
    微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

  2. 搜索 html2wxml ,选中并添加
    微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

  3. 添加成功
    微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

  4. 回到小程序开发环境,编辑 app.json ,添加插件声明,最新版为 1.4.0

"plugins": {
  	"htmltowxml": {
  		"version": "1.4.0",
  		"provider": "wxa51b9c855ae38f3c"
  	}
}

微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

  1. 在对应页面的 json 文件,比如首页 index.json,添加使用插件组件的声明
 "usingComponents": {
   "htmltowxml": "plugin://htmltowxml/view"
}

微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序
基本配置就已经完成剩下的就是如何在页面上渲染使用了
微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序
因为是写好的页面数据比较多,我也是给大家标注了一下,就是声明一个空的数据去接收你的富文本字段而已
微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序
最后一步在页面上渲染使用就行
微信小程序 - 解析富文本插件版们,微信小程序,微信小程序,小程序

(2) 组件版本准备

  1. 复制整个 html2wxml-component 文件夹到小程序目录

  2. 在对应页面的 json 文件,比如首页 index.json,添加使用组件的声明,注意路径

 "usingComponents": {
   	"htmltowxml": "path/to/html2wxml-component/html2wxml"
}

(3) 模板版本准备

  1. 复制整个 html2wxml-template 文件夹到小程序目录

  2. 在对应页面的 js 文件,比如首页 index.js,添加引用声明,并使用html2wxml方法进行数据绑定,注意路径,参数分别为绑定的数据名、已解析的富文本数据、当前页面对象和容器与屏幕边缘的单边的距离

var html2wxml = require(‘path/to/html2wxml-template/html2wxml.js’);
html2wxml.html2wxml(‘article’, res.data, this, 5);
  1. 在对应页面的 wxml 文件,比如首页 index.wxml,添加引用模板的声明,并使用模板,注意路径和绑定的数据名
  <import src="path/to/html2wxml-template/html2wxml.wxml" />
  <template is="html2wxml" data="{{wxmlData:article}}" />
  1. 在对应页面的 wxss 文件,比如首页 index.wxssapp.wxss, 引入样式表和你喜欢的代码高亮样式,注意路径
   	@import "path/to/html2wxml-template/html2wxml.wxss";
   	@import "path/to/html2wxml-template/highlight-styles/darcula.wxss";

(4) 组件使用方法(仅适用于插件版本和组件版本)

属性名 类型 默认值 说明
text String null 要渲染的HTML或Markdown文本
json Object {} 已经过解析的JSON数据
type String html 要渲染的文本类型,可用值html,markdown,md
highlight Boolean true 是否对pre内文本进行代码高亮
highlightStyle String darcula pre代码高亮样式,可用值default,darcula,dracula,tomorrow
highlightLanguages Array [‘html’, ‘js’, ‘css’, ‘php’] pre代码高亮检测语言。
linenums Boolean true 是否为pre添加行号显示
padding Number 5 html2wxml组件与屏幕边缘的单边距离,用于图片自适应
imghost String null img标签中src属性可能的相对路径进行域名补全
showLoading Boolean true 是否显示加载中动画
bindWxmlTagATap Handler 点击a标签的回调

示例

// 将Page中的content数据作为HTML格式渲染
<htmltowxml text="{{content}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 禁用代码高亮功能
<htmltowxml text="{{content}}" highlight="{{false}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 禁用代码行号显示功能
<htmltowxml text="{{content}}" linenums="{{false}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 代码高亮样式改为tomorrow
<htmltowxml text="{{content}}" highlightStyle="tomorrow" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 设置代码高亮检测语言 (最多6个,自行搭建服务不受限制)
<htmltowxml text="{{content}}" highlightLanguages="{{['html','js','php','css','cpp','ruby']}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 对HTML数据中的img标签的相对路径补全域名
<htmltowxml text="{{content}}" imghost="https://www.qwqoffice.com" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 禁用加载中动画
<htmltowxml text="{{content}}" showLoading="{{false}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 将Page中的text数据作为Markdown格式渲染
<htmltowxml text="{{text}}" type="md" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

// 直接渲染Page中的已经过解析的obj数据
<htmltowxml json="{{obj}}" bindWxmlTagATap="wxmlTagATap" ></htmltowxml>

服务端用法

具体用法请参考:https://github.com/qwqoffice/html2wxml
富文本的解析默认是由QwqOffice完成,存在不稳定因素,你可以自行搭建解析服务或将解析组件引入到你的项目中。

  1. 复制整个 html2wxml-php 文件夹到项目目录中

  2. 引入类文件class.ToWXML.php

include( 'path/to/html2wxml-php/class.ToWXML.php' );
  1. 实例化html2wxml,进行解析并输出,示例:
 $towxml = new ToWXML();
   	$json = $towxml->towxml( '<h1>H1标题</h1>', array(
   		'type' => 'html',
   		'highlight' => true,
   		'linenums' => true,
   		'imghost' => null,
   		'encode' => false,
   		'highlight_languages' => array( 'html', 'js', 'php', 'css' )
   	) );
   	echo json_encode( $json, JSON_UNESCAPED_UNICODE );

参数介绍

参数名 类型 默认值 说明
text String 要渲染的HTML或Markdown文本
args Array [] 附加参数

args 参数介绍

参数名 类型 默认值 说明
type String html 要渲染的文本类型,可用值html,markdown,md
highlight Boolean true 是否对pre内文本进行代码高亮
highlight_languages Array [‘html’, ‘js’, ‘css’, ‘php’] pre代码高亮检测语言。查看可用语言
linenums Boolean true 是否为pre添加行号显示
imghost String null img标签中src属性可能的相对路径进行域名补全
encode Boolean true 是否对结果进行JSON编码

二、Towxml

https://gitcode.net/mirrors/sbfkcel/towxml

https://github.com/sbfkcel/towxml

Towxml 是一个可将HTML、markdown转换为WXML(WeiXin Markup Language)的渲染库。
由于微信小程序不能直接渲染HTML,因此富文本编辑器生成的HTML内容无法直接在小程序中展示。
可能是出于安全因素考虑,即使WXML文本在小程序中也是以字符串方式进行渲染。
所以……
然后……
于是,Towxml 就因此降临了。

特色

  • 支持代码语法高亮
  • 使用简单
  • 多主题动态支持
  • 极致的中文排版优化

快速上手

  1. 克隆TOWXML到小程序根目录
git clone https://github.com/sbfkcel/towxml.git
  1. 在小程序app.js中引入库
//app.js
const Towxml = require('/towxml/main');     //引入towxml库
App({
    onLaunch: function () {
    },
    towxml:new Towxml()                     //创建towxml对象,供小程序页面使用
})
  1. 在小程序页面文件中引入模版
<!--pages/index.wxml-->
 
<!--引入towxml模版入口文件,并使用模版-->
<import src="/towxml/entry.wxml"/>
<template is="entry" data="{{...article}}"/>
  1. 在小程序对应的js中请求数据
//pages/index.js
 
const app = getApp();
Page({
    data: {
        //article将用来存储towxml数据
        article:{}
    },
    onLoad: function () {
        const _ts = this;
 
        //请求markdown文件,并转换为内容
        wx.request({
            url: 'http://xxx/doc.md',
            header: {
                'content-type': 'application/x-www-form-urlencoded'
            },
            success: (res) => {
                //将markdown内容转换为towxml数据
                let data = app.towxml.toJson(res.data,'markdown');
 
                //设置文档显示主题,默认'light'
                data.theme = 'dark';
 
                //设置数据
                _ts.setData({
                    article: data
                });
            }
        });
    }
})
  1. 引入对应的WXSS
/**pages/index.wxss**/
 
/**基础风格样式**/
@import '/towxml/style/main.wxss';
 
/**如果页面有动态主题切换,则需要将使用到的样式全部引入**/
 
/**主题配色(浅色样式)**/
@import '/towxml/style/theme/light.wxss';
 
/**主题配色(深色样式)**/
@import '/towxml/style/theme/dark.wxss';

OK,大功告成~~

API

如果为了追求极致的体验,建议将markdown、html转换为towxml数据的过程放在服务器上,在小程序中直接请求数据即可。

  1. 依赖环境

需要 Node.js 环境。(已经安装请忽略)文章来源地址https://www.toymoban.com/news/detail-626022.html

  1. 安装 towxml
npm install towxml
  1. 接口使用
const Towxml = require('towxml');
const towxml = new Towxml();
 
//Markdown转WXML
let wxml = towxml.md2wxml('# Article title');
 
//html转WXML
let wxml = towxml.html2wxml('<h1>Article title</h1>');
 
//Markdown转towxml数据
let data = towxml.toJson('# Article title','markdown');
 
//htm转towxml数据
let data = towxml.toJson('# Article title');

Demo示例

  1. towxml/demo添加为小程序工程
  2. 再克隆towxmldemo目录
  3. 使用小程序开发工具编译即可

到了这里,关于微信小程序 - 解析富文本插件版们的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序不使用插件,渲染富文本中的视频,图片自适应,plus版本

    小程序原生的 rich-text 不支持渲染视频,所以需要处理后显示,主要用了字符串切割以及匹配 当我们从后端拿到富文本数据时,我们利用replace方法去修改图片的样式,保证图片与手机宽度保持一致 如果富文本出现莫名的空白区域,可能是富文本中包含有换行标签,我们就将

    2024年02月02日
    浏览(40)
  • uniapp开发微信小程序,使用微信同声传译插件,实现语音识别输入文本

    第一步:现在微信小程序管理后台:“设置”-》“第三方设置”-》“插件管理”中添加插件。 但是这个地方,没有搜索到插件,就到微信服务市场去搜微信服务市场  搜索到以后添加到需要的小程序里面,然后返回管理中心查看,就可以看到了 第二步:在配置文件中引入插

    2024年02月09日
    浏览(46)
  • uni-app-微信小程序实现markdown文本解析、数学公式解析超详细教程

    在做AI问答功能,文本返回的是markdown形式,如果没有对Markdown文本进行转换很难看,如下图,转换后是不是很好了很多,特别是代码内容阅读起来舒服多了。 下面来介绍下,我在开发小程序 软件聚导航 AI助手对实现Markdown文本解析,看到两款较好的组件,其中第二款towxml组件

    2024年02月03日
    浏览(43)
  • 微信小程序加载html标签(解析html标签、wxParse加载富文本html)

     博主介绍: 本人专注于Android/java/数据库/微信小程序技术领域的开发,以及有好几年的计算机毕业设计方面的实战开发经验和技术积累;尤其是在安卓(Android)的app的开发和微信小程序的开发,很是熟悉和了解;本人也是多年的Android开发人员;希望我发布的此篇文件可以帮

    2024年02月04日
    浏览(36)
  • 微信小程序富文本解析 rich-text 、wxParse、mp-html

    rich-text 微信自带标签 很多局限性 还有后台的富文本 font 标签 size 不生效。字体大小无法设置 wxParse 微信很早的那期 副本插件 封装。拥有7.7k stars已停止维护了的库 缺点 1、在解析富文本过程中,多次调用小程序的setData()方法,对性能有一定影响 2、可以解析audio,但是不能保

    2024年02月15日
    浏览(35)
  • 微信小程序使用rich-text解析富文本字符串的时候,遇到image标签图片很大超过屏幕

    场景 : 使用uniapp开发微信小程序,解析富文本文章需求 用到的组件: u-view2.0的u-parse  uniapp提供的rich-text 以上两种组件都是解析富文本的作用,一般用于富文本解析场景,比如解析文章内容,商品详情,带原生HTML标签的各类字符串等,此组件和uni-app官方的 rich-text 组件功能

    2024年02月13日
    浏览(37)
  • 微信小程序文本组件text使用详解-微信小程序系统学习攻略​

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好。 在微信小程序中,组件 text 用来显示文本,基本使用代码如下: 1 基本样式设置 基本使用还是比较简单的,下面咱们来论述一下文本样式的设置,首先是给他设置一个 class 然后在对应的 wxss 文件中编写

    2023年04月13日
    浏览(34)
  • 微信小程序——简易复制文本

    在微信小程序中,可以使用wx.setClipboardData()方法来实现复制文本内容的功能。以下是一个示例代码: 在上述代码中,通过调用wx.setClipboardData()方法,传入要复制的文本内容,成功复制后会弹出一个Toast提示框显示\\\"复制成功\\\"。

    2024年02月09日
    浏览(26)
  • 小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----文本翻译(三)

    官方文档链接:https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx069ba97219f66d99token=370941954lang=zh_CN#- 要使用插件需要先在小程序管理后台的 设置-第三方设置-插件管理 中添加插件,目前该插件仅认证后的小程序。 文本翻译目前支持的语言有 zh_CN(中国大陆) en_US(英语)。 参数说明:

    2024年01月18日
    浏览(91)
  • 微信小程序文本横向无缝滚动

    背景: 微信小程序中列表宽度不够长,其中某字段显示不完整,因此要使其自动滚动。 (最初看网上很多用定时器实现,但他们的案例中都只是一个横幅、用定时器也无所谓。但是我的需求中是一个上下无限滚动的列表,如果设置定时器性能耗费太大,因此只用css实现) 样

    2024年02月06日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包