vue和微信小程序处理markdown格式数据

【1】Vue处理markdown数据

在Vue项目中展示Markdown格式的数据,比如通义千问模型返回的数据,你可以借助一些Markdown解析库将Markdown文本转换为HTML,然后在页面上渲染。以下为你详细介绍几种常用的实现方式。

方法一:使用marked

marked是一个流行的Markdown解析器,能将Markdown文本转换为HTML。

步骤
  1. 安装marked
    在项目根目录下,通过以下命令安装marked
bash 复制代码
npm install marked
  1. 创建Vue组件
    以下是一个简单的Vue组件示例,用于展示Markdown数据:
vue 复制代码
<template>
  <div>
    <!-- 使用v-html指令将解析后的HTML插入到DOM中 -->
    <div v-html="parsedMarkdown"></div>
  </div>
</template>

<script>
import marked from 'marked';

export default {
  data() {
    return {
      // 模拟通义千问返回的Markdown数据
      markdownData: `# 标题一
这是一段普通的文本。
- 列表项1
- 列表项2`,
      parsedMarkdown: ''
    };
  },
  mounted() {
    // 在组件挂载时解析Markdown数据
    this.parsedMarkdown = marked(this.markdownData);
  }
};
</script>

方法二:使用vue-markdown组件

vue-markdown是专门为Vue设计的Markdown组件,使用起来更加方便。

步骤
  1. 安装vue-markdown
    在项目根目录下,通过以下命令安装vue-markdown
bash 复制代码
npm install vue-markdown
  1. 创建Vue组件
    以下是使用vue-markdown组件的示例:
vue 复制代码
<template>
  <div>
    <!-- 使用vue-markdown组件展示Markdown数据 -->
    <vue-markdown :source="markdownData"></vue-markdown>
  </div>
</template>

<script>
import VueMarkdown from 'vue-markdown';

export default {
  components: {
    VueMarkdown
  },
  data() {
    return {
      // 模拟通义千问返回的Markdown数据
      markdownData: `# 标题一
这是一段普通的文本。
- 列表项1
- 列表项2`
    };
  }
};
</script>

处理通义千问返回的数据

如果你要展示通义千问返回的Markdown数据,只需将上述示例中的markdownData替换为从通义千问API获取的数据即可。以下是一个简单的示例:

vue 复制代码
<template>
  <div>
    <vue-markdown :source="markdownData"></vue-markdown>
  </div>
</template>

<script>
import VueMarkdown from 'vue-markdown';
import axios from 'axios';

export default {
  components: {
    VueMarkdown
  },
  data() {
    return {
      markdownData: ''
    };
  },
  async mounted() {
    try {
      // 模拟调用通义千问API
      const response = await axios.post('https://api.example.com', {
        // 请求参数
      });
      // 假设返回的数据在response.data.text字段中
      this.markdownData = response.data.text;
    } catch (error) {
      console.error('获取数据失败:', error);
    }
  }
};
</script>

【2】微信小程序处理markdown

在微信小程序里解析 Markdown 格式数据(如通义千问模型返回的数据),可以借助第三方库将 Markdown 转换为小程序能够渲染的格式,下面为你介绍几种常见的实现方式。

方法一:使用 markdown-it

markdown-it 是一个快速的 Markdown 解析器,可将 Markdown 文本转换为 HTML,再结合微信小程序的 rich-text 组件来展示。

步骤
  1. 安装 markdown-it
    可以通过 npm 来安装 markdown-it 到小程序项目中。在项目根目录下执行以下命令:
bash 复制代码
npm install markdown-it

接着在微信开发者工具里,点击"工具" -> "构建 npm"。

  1. 编写代码解析并展示 Markdown 数据
    在小程序的 .js 文件里进行 Markdown 解析:
javascript 复制代码
// pages/index/index.js
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();

Page({
  data: {
    htmlContent: ''
  },
  onLoad() {
    // 模拟通义千问返回的 Markdown 数据
    const markdownData = `# 标题一
这是一段普通的文本。
- 列表项1
- 列表项2`;
    // 解析 Markdown 数据为 HTML
    const html = md.render(markdownData);
    this.setData({
      htmlContent: html
    });
  }
});

在对应的 .wxml 文件里使用 rich-text 组件展示解析后的 HTML 内容:

xml 复制代码
<!-- pages/index/index.wxml -->
<rich-text nodes="{{htmlContent}}"></rich-text>

方法二:使用 wxParse 插件

wxParse 是专门为微信小程序设计的 HTML 解析插件,也能处理 Markdown 内容。

步骤
  1. 下载并引入 wxParse 插件

    wxParse 的 GitHub 仓库(https://github.com/icindy/wxParse)下载代码,将 wxParse 文件夹复制到小程序项目中。

  2. 使用 wxParse 解析并展示 Markdown 数据

    .js 文件中引入并使用 wxParse

javascript 复制代码
// pages/index/index.js
const WxParse = require('../../wxParse/wxParse.js');

Page({
  onLoad() {
    // 模拟通义千问返回的 Markdown 数据
    const markdownData = `# 标题一
这是一段普通的文本。
- 列表项1
- 列表项2`;
    // 解析 Markdown 数据
    WxParse.wxParse('content', 'md', markdownData, this, 5);
  }
});

在对应的 .wxml 文件里展示解析后的内容:

xml 复制代码
<!-- pages/index/index.wxml -->
<import src="../../wxParse/wxParse.wxml"/>
<template is="wxParse" data="{{wxParseData:content.nodes}}"/>

处理通义千问返回的数据

若要展示通义千问返回的 Markdown 数据,只需把上述示例里模拟的 markdownData 替换成从通义千问 API 获取的数据即可。以下是一个简单示例:

javascript 复制代码
// pages/index/index.js
const MarkdownIt = require('markdown-it');
const md = new MarkdownIt();

Page({
  data: {
    htmlContent: ''
  },
  async onLoad() {
    try {
      // 调用通义千问 API 获取数据
      const response = await wx.request({
        url: 'https://api.example.com',
        method: 'POST',
        data: {
          // 请求参数
        }
      });
      // 假设返回的数据在 response.data.text 字段中
      const markdownData = response.data.text;
      const html = md.render(markdownData);
      this.setData({
        htmlContent: html
      });
    } catch (error) {
      console.error('获取数据失败:', error);
    }
  }
});
相关推荐
ziyue757513 分钟前
vue修改element-ui的默认的class
前端·vue.js·ui
树叶会结冰34 分钟前
HTML语义化:当网页会说话
前端·html
冰万森40 分钟前
解决 React 项目初始化(npx create-react-app)速度慢的 7 个实用方案
前端·react.js·前端框架
牧羊人_myr1 小时前
Ajax 技术详解
前端
浩男孩1 小时前
🍀封装个 Button 组件,使用 vitest 来测试一下
前端
蓝银草同学1 小时前
阿里 Iconfont 项目丢失?手把手教你将已引用的 SVG 图标下载到本地
前端·icon
布列瑟农的星空1 小时前
重学React —— React事件机制 vs 浏览器事件机制
前端
程序定小飞2 小时前
基于springboot的在线商城系统设计与开发
java·数据库·vue.js·spring boot·后端
一小池勺2 小时前
CommonJS
前端·面试