uniapp&微信小程序markdown&latex

一、需求背景

希望在uniapp&微信小程序中支持markdown渲染,包括latex数学公式、代码渲染等等。

目前最好用、使用最广的库就是towxml

towxml仓库地址:github.com/sbfkcel/tow...

二、安装使用

文本介绍所使用的环境:uniapp、vite、vue3、ts。

本文主要介绍配置markdown、latex数学公式、流程图。

towxml仓库中有使用方式,具体步骤如下:

  • 克隆项目到本地
    • git clone https://github.com/sbfkcel/towxml.git
  • 安装构建依赖
    • npm installyarn
  • 编辑配置文件towxml/config.js
    • 根据自行要求,仅保留你需要的功能即可(配置中有详细注释)
  • 运行 npm run buildyarn run build即可

新构建出来的文件在dist目录下,将dist目录复制到你的小程序项目中并将目录名称改为towxml即可。本文复制到wxcomponents目录,最好跟本文保持一致。

  • 编辑/wxcomponents/towxml/decode.json 文件,将路径改为相对路径。

    json 复制代码
      {
        "component": true,
        "usingComponents": {
          "decode": "./decode",
          "latex": "./latex/latex",
          "table": "./table/table",
          "todogroup": "./todogroup/todogroup",
          "yuml": "./yuml/yuml",
          "img": "./img/img"
        }
      }
  • 配置latex数学公式和yum流程图解析引擎

    • 服务器需要安装nodejs 8.0+

    • 克隆markdown-server项目git clone https://github.com/sbfkcel/markdown-server

    • 安装依赖 npm i

    • 运行服务 node index.js

    • 访问服务 http://127.0.0.1:8001?tex=hello

      • 如果有显示Hello字眼则说明服务部署成功
      • 端口号可打开index.js文件自行修改(文件最后一行)
    • 将服务地址 http://服务器IP:8001?texhttp://服务器IP:8001?yuml填写到towxml/config.js中
      *

      css 复制代码
        // 数学公式解析API
        latex:{
            api:'http://127.0.0.1:8001/latex/?tex'
        },
      
        // yuml图解析APPI
        yuml:{
            api:'http://127.0.0.1:8001/yuml/?yuml'
        },
  • uniapp环境的话需要将towxml/index.js函数导出方式改以下

    ini 复制代码
    export const useTowxml = (str,type,option)=>{
       option = option || {};
       let result;
       switch (type) {
           case 'markdown':
               result = parse(md(str),option);
           break;
           case 'html':
               result = parse(str,option);
           break;
           default:
               throw new Error('Invalid type, only markdown and html are supported');
           break;
       };
       return result;
    };
  • 引用towxml组件

    json 复制代码
    {
      "path": "detail/detail",
      "style": {
        "usingComponents": {
          "towxml": "/wxcomponents/towxml/towxml"
        }
      }
    }
  • 在页面中使用

    • 导入组件 import {useTowxml} from '@/wxcomponents/towxml/index.js';
    • 封装函数 const useMarkdown = (value: string) => useTowxml(value || '', 'markdown')
    • 在模板中使用 <towxml :nodes="useMarkdown(currentQuestion.analysis)"/>
  • 重新编译即可,若不生效,请清除缓存重新打开微信开发者工具。

总结

本文主要介绍了微信小程序中使用towxml库来支持渲染markdown内容。 渲染latex和yuml时需要引用第三方引擎markdown-server解析,需要在towxml中配置好解析地址。 该引擎支持docker部署。

相关推荐
林恒smileZAZ3 小时前
Vue<前端页面版本检测>
前端·javascript·vue.js
码事漫谈6 小时前
当AI开始“思考”:我们是否真的准备好了?
前端·后端
许杰小刀7 小时前
ctfshow-web文件包含(web78-web86)
android·前端·android studio
我是Superman丶7 小时前
Element UI 表格某行突出悬浮效果
前端·javascript·vue.js
恋猫de小郭7 小时前
你的代理归我了:AI 大模型恶意中间人攻击,钱包都被转走了
前端·人工智能·ai编程
xiaokuangren_8 小时前
前端css颜色
前端·css
hoiii1878 小时前
C# 基于 LumiSoft 实现 SIP 客户端方案
前端·c#
anOnion8 小时前
构建无障碍组件之Meter Pattern
前端·html·交互设计
小码哥_常9 小时前
Spring Boot配置diff:解锁配置管理新姿势
前端
小码哥_常9 小时前
告别onActivityResult!Android数据回传的3大痛点与终极解决方案
前端