2
头图

【小程序制作之旅】完美支持 Markdown 看这一篇就够了,超详细教程

博主小程序体验 | 博主公众号分享

小程序.jpg 公众号.jpg

在我做自己小程序的时候有些文字描述、详情等等想用Markdown展示,但是发现微信小程序在支持Markdown方面不是很友好,于是就在 github 上找到了一款超好用的组件,Twoxml,完美支持Markdown,下面就记录一下小程序集成 twoxml 的过程分享一下!

Towxml 介绍

Towxml 是一个轻量级的 Markdown 渲染引擎,主要用于将 Markdown 格式的文本转换为 HTML 内容。它特别适合用于微信小程序、H5 应用等场景,可以方便地展示各种格式的文本,包括标题、列表、图片、链接等。

主要特点

  1. 简单易用:使用 Towxml 可以轻松地将 Markdown 文本渲染为可视化的内容。
  2. 支持多种 Markdown 语法:如标题、列表、粗体、斜体、引用、代码块等。
  3. 扩展性:用户可以根据需要进行自定义扩展,比如添加新的 Markdown 语法或样式。
  4. 高性能:专为小程序和移动端设计,渲染性能较高,能快速响应用户操作。
  5. 样式灵活:可以通过 CSS 自定义渲染后的 HTML 的样式,使其更符合应用的设计需求。

使用场景

  • 博客或文档:适合用于展示技术文档、博客文章等。
  • 小程序开发:在微信小程序中展示 Markdown 格式的内容。
  • H5 页面:用于网页中的文本内容展示。
Towxml 是一个实用的工具,特别适合开发者在需要 Markdown 渲染的场合使用。如果你需要快速地将 Markdown 文本展示为 HTML 内容,Towxml 是一个不错的选择。

Towxml 特色

640.webp

Towxml 截图效果

640.webp

Towxml 文档

Towxml 官网:

https://github.com/sbfkcel/towxml

Towxml 如何使用:

https://github.com/sbfkcel/towxml/wiki/3.0-%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8

小程序中引入 Twoxml

  • 1、首先下载 twoxml

    // clone twoxml 仓库
    git clone https://github.com/sbfkcel/towxml.git
    // 进入文件夹
    cd towxml
    // 安装依赖
    npm install
    // 构建
    npm run build
  • 2、构建完成后,找到 dist文件夹改名为towxml,方便识别,然后复制到小程序的/miniprogram/路径下与pages等目录同级

图片

  • 3、在小程序的app.ts中引入towxml

    // app.ts
    App<any>({
    globalData: {},
    towxml: require('/towxml/index'),
    })
  • 4、在需要使用 md 的页面使用

    JSON 文件
    {
    "usingComponents": {
      "towxml":"/towxml/towxml"
    }
    }
    wxml 文件
    <!--index.wxml-->
    <view class="container">
      <towxml nodes="{{md}}" />
    </view>
    ts 文件
    //获取应用实例
    const app = getApp();
    
    Page({
    data: {
      md: {}// md 内容
    },
    })

towxml 接口获取md内容渲染

  // 获取markdown文本
  getText: (url, callback) => {
    wx.request({
      url: url,
      header: {
        'content-type': 'application/x-www-form-urlencoded'
      },
      success: (res) => {
        if (typeof callback === 'function') {
          callback(res);
        };
      }
    });
  },

  onLoad: function () {
    // 获取文本,第一个参数指向后端的文件地址(你需要起一个后端)
    this.getText('http://127.0.0.1:8080/test.md', res => {
      // 回调函数中完成更新数据的逻辑
      let result = app.towxml(res.data, 'markdown',{
        base:'https://xxx.com',            
        theme:'light',                    
        events:{                    
          tap:(e)=>{
            console.log('tap',e);
          }
        }
      });
      // 更新解析数据
      this.setData({
        md:result
      });
    })
  }

towxml 详细讲解一下如何渲染项目中自己写的 md 内容(因为我是自己开发的,并没有后端,想把内容直接写在项目中)

  • 1、在项目中创建个 md-txt.ts,然后使用模板字符串写自己的 md 内容,如下:

    export const mdTxt = `
    
    ## 测试 towxml 渲染 md title
    
    > 使用方法
    >
    > **简单易用**
    
    `
    重点:在字符串模板中其他的都好说,字符串随便写,如果要渲染 代码,就需要一下方法了,将 (`)转义一下才可以。如下
    export const mdTxt = `
    
    ## 渲染 code 方法, 如下
    
    \`\`\`html
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title></title>
    </head>
    
    <body>
      
    </body>
    </html>
    
    <script>
    
    </script>
    
    \`\`\`
    `
  • 2、引入 mdText,并赋值

    import { mdTxt } from "./md-txt";
    
    const app = getApp();
    data: {
      md: {}
    },
    
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad() {
      const result = app.towxml(mdTxt, 'markdown', {
        theme: 'dark',                    // 主题,默认`light`
        events: {                    // 为元素绑定的事件方法
          tap: (e: any) => {
            console.log('tap', e);
          }
        }
      });
      // 更新解析数据
      this.setData({
        md: result,
      });
    },
    

    640.webp

总结

使用Towxml来实现markdown其实比较简单,方便快捷,网上也可以搜到具体使用方法,但是问什么我还要写这一篇文章,就是因为想把内容直接写在项目中,并且用模板字符串的方式渲染 md ,当时碰到 在模板字符串中用md 语法写 代码的时候碰到的这个问题,想着就把他总结下来。

分享,非独使他人明晰,更为自身升华之途

白水
1.8k 声望391 粉丝