uni-app-微信小程序实现markdown文本解析、数学公式解析超详细教程

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

前言

在做AI问答功能,文本返回的是markdown形式,如果没有对Markdown文本进行转换很难看,如下图,转换后是不是很好了很多,特别是代码内容阅读起来舒服多了。

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

下面来介绍下,我在开发小程序软件聚导航AI助手对实现Markdown文本解析,看到两款较好的组件,其中第二款towxml组件已应用到项目中。

遇到的坑

mp-html + Markdown 组合方式,理论支持多端,包括h5、小程序、App,但并没有使用这个,而是使用了towxml组件,因为,在使用mp-html + Markdown时,小程序调试时很正常,但发送到真机调试却爆出了一些莫名其妙的错误,尝试了一番,也无法解决,最后使用towxml。

教程开始

1. 使用 npm 下载 mp-html 插件

官方文档: https://jin-yufeng.gitee.io/mp-html/#/overview/quickstart

npm install mp-html

使用方式

<template><view><mp-html :content="html" /></view>
</template>
<script>
import mpHtml from "mp-html/dist/uni-app/components/mp-html/mp-html";
export default {
  // 不可省略components: {
    mpHtml,
  },
  data() {
    return {
      html: "<div>Hello World!</div>",
    };
  },
};
</script>

2. 使用 npm 下载 marked 插件和 highlight 插件

marked 插件可以和 highlight 插件共用,实现 markdown 中代码块的高亮效果

marked.js 官方文档:https://marked.js.org/

highlight.js 官方文档:https://fenxianglu.cn/highlight.html

npm install marked
npm install highlight.js

完整代码

<template><view><mp-html :content="html" /></view>
</template>
<script>
import mpHtml from "mp-html/dist/uni-app/components/mp-html/mp-html";
import { marked } from "marked";
import hljs from "highlight.js";
import "highlight.js/scss/atom-one-dark.scss";

export default {
  // 不可省略components: {
    mpHtml,
  },
  data() {
    return {
      html: "<div>Hello World!</div>",
      markdown: "```javascript
function(){
	console.log(123)
}
```",
    };
  },
  mounted() {
    this.initHighLight();
    this.html = marked(this.markdown);
    // 下面代码是解决代码高亮无效问题// this.html = marked(this.markdown).replace(/<pre>/g, "<pre class='hljs'>");
  },
  methods: {
    initHighLight() {
      hljs.configure({
        useBR: true,
        tabReplace: " ",
      });
      marked.setOptions({
        renderer: new marked.Renderer(),
        gfm: true,
        tables: true,
        breaks: false,
        pedantic: false,
        highlight: function (code, lang) {
          if (lang && hljs.getLanguage(lang)) {
            return hljs.highlight(lang, code, true).value;
          } else {
            return hljs.highlightAuto(code).value;
          }
        },
      });
    },
  },
};
</script>

第二种

towxml:实现markDown转XML,这种只支持微信小程序,H5无法使用

Towxml 是一个可将HTML、Markdown转为微信小程序WXML(WeiXin Markup Language)的渲染库。用于解决在微信小程序中Markdown、HTML不能直接渲染的问题。

1、克隆项目到本地或直接到项目地址下载压缩包

git clone https://github.com/sbfkcel/towxml.git

2、使用cmd安装构建依赖

npm install 或 yarn install

3、运行 npm run build 或 yarn run build,目录下看到dist。

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

把dist这个文件复制到你项目的根目录wxcomponents文件夹里面(如果没有这个文件夹,自己新建一个即可),并命名为towxml。

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

然后进入towxml,修改decode.js 里面usingComponents 下面的文件为相对路径,修改后如下图。别忘了,这步骤很重要!这步骤很重要!这步骤很重要!

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

还有一个大坑,如果你使用uniapp easycom自动引入Uview的代码,记得排除 u-shadow-root 组件,因为这个组件名称是towxml的里面的,如果没有排除,会从uview匹配u-shadow-root 组件,提示找不到不到组件的错误:

"easycom": {
      "autoscan": true,
      "custom": {
        // "^uni-(.*)": "@/uview-ui/components/u-$1/u-$1.vue", // 自动匹配 u- 开头的组件
        "^uni-(?!shadow-root)(.*)": "@/uview-ui/components/u-$1/u-$1.vue" // 排除u-shadow-root 组件被防止引入报错
      }
    }

在pages.json,所需要用到towxml的页面添加如下代码:

"usingComponents": {
    "towxml": "/wxcomponents/towxml/towxml"
}

如图:

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

在main.js 引入,并挂载到原型中,如下图。

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

在页面中进行使用,主题theme对象,可以不写,两种可选(dark/light),默认light

<towxml v-else :nodes="$towxmlFun('传入需要解析的Markdown文本', 'markdown',{theme: 'dark'})" />

如下图:

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

效果展示:

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

本以为万事大吉了,谁料到遇到公式的文本时,竟然无法解析数学公式,如下图:

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

toxwml虽然提供有数学公式解析,yuml图解析的功能,但是,需要使用者搭建公式解析服务API才能使用😅,其实就是自己搭建接口,然后通过接口把这些公式提交的服务端处理后,再返回给前端渲染:

// LaTex公式、yuml 解析服务架设参见:  https://github.com/sbfkcel/markdown-server

这解析项目使用的是node开发的,所以还需在后端部署node环境,然后运行项目,把你的接口替换即可:

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css

现在数学公式,终于可以正常解析了,看起来真的舒服,丝滑

uniapp解析makdown字符串,uni-app,微信小程序,小程序,vue.js,css文章来源地址https://www.toymoban.com/news/detail-768445.html

到了这里,关于uni-app-微信小程序实现markdown文本解析、数学公式解析超详细教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • uni-app实现点击显示隐藏列表,兼容微信小程序

    效果:    小程序打印的结果:值一直为true   如果你试过v-if不生效,又试了v-show,还是不行!!千万不要着急! 不是自己写的不对,而是uni-app和微信小程序修改值的方式不一致造成的。反正就是不承认是自己的问题。 其实解决的办法也很简单,就是要兼容两端,写出符合

    2024年02月09日
    浏览(68)
  • uni-app/微信小程序 实现图片或元素淡入淡出效果

    如题: 直接上代码 html js部分 需要在date中声明好                 current: 0,                 hidepic: null,                 showpic: null 因为是已进入就开始的,所以 要在生命周期中使用 最后一部别忘了,要给需要淡入淡出的元素或者图片设置绝对定位

    2024年02月12日
    浏览(71)
  • uni-app实现自定义导航栏,兼容H5、App、微信小程序

    很多情况下,系统自带的导航栏无法满足UI设计的要求,这时候就需要我们自定义导航栏来实现需求,要考虑跨端的多种情况,这里我们封装成一个组件来使用,实现效果如下: 一、H5、App、微信小程序的区别 1.H5:导航栏高度可以设为44px,它没有状态栏,因为H5端运行在浏览

    2024年04月13日
    浏览(76)
  • Uni-app实现左右滑动页面内容切换(兼容微信小程序)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档         前言         整体思路         一、HTML部分         二、Script部分         三、Style部分           (先声明哦我可不是偷懒,只是想学术借鉴一下)因为最近有在做左右滑动功能,

    2024年02月07日
    浏览(105)
  • uni-app之微信小程序实现‘下载+保存至本地+预览’功能

    目录 一、H5如何实现下载功能 二、微信小程序实现下载资源功能方面与H5有很大的不同 三、 微信小程序实现文件(doc,pdf等格式,非图片)下载(下载-保存-预览)功能 四、图片预览、保存、转发、收藏:uni.previewImage() 五、 我当前遇到‘关于文件预览uni.openDocument()’API的问

    2024年02月15日
    浏览(66)
  • Uni-app开发小程序|基于微信小程序报修系统设计与实现

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月15日
    浏览(64)
  • 微信小程序使用uni-app开发小程序及部分功能实现详解心得

    目录 一、uni-app 1、简介 2、开发工具 3、新建 uni-app项目 4、把项目运行到微信开发者工具 二、实现tabBar效果 1、创建tabBar页面 2、配置tabBar 1、创建分包目录 2、在 pages.json 文件中配置 3、创建分包页面 四、公用方法封装 五、搜索功能 1、搜索组件 2、搜索建议实现 3、本地存储

    2024年02月11日
    浏览(64)
  • uni-app 微信小程序中如何通过 canvas 画布实现电子签名?

    一、实际应用场景 电子签名软件应用场景:电子签名在金融、银行、贷款行业中可以用于对内日常办公流转的文档的盖章签字,对外涉及业务合作协议,采购合同,贷款申请、信用评估、贷款合同、贷款文件表、说明函等等。 可以说,只要是涉及纸质文档签字盖章的场景,

    2024年02月10日
    浏览(57)
  • uni-app的Vue.js实现微信小程序的紧急事件登记页面功能

    主要功能实现  完成发生时间选择功能,用户可以通过日期选择器选择事件发生的时间。 实现事件类型选择功能,用户可以通过下拉选择框选择事件的类型。 添加子养殖场编号输入框,用户可以输入与事件相关的子养殖场编号。 完成事件描述输入功能,用户可以通过文本输

    2024年02月12日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包