微信小程序markdown转换为wxml(uniapp开发)

项目背景

后端Java、小程序开发uniapp

后台需要发布文章,在微信小程序端显示,但是后台文章保存格式为markdown格式,而且在文章中存在table数据,在微信小程序中是没有table的,这里的转编译就成了一个大问题,之前也使用过Towxml直接对markdown进行编译,发现在显示图片和table时仍然会出现问题,而且在uniapp中使用Towxml也不是太方便,这里我们采用后端将markdown先转换为html,再到小程序端将其转换为wxml来进行处理。

处理方式

后端:

后端这里我使用的是Java,用FlexMark框架将markdown转换为html,再发送给前端,Java处理markdown文章入下,这里不进行过多说明:

Java处理markdown为HTML

微信小程序端:

微信小程序端我使用的是mphtml框架进行的处理:

步骤一:

npm install mp-html

步骤二:

到需要的页面进行导入

import mpHtml from 'mp-html/dist/uni-app/components/mp-html/mp-html'

步骤三:

导入组件,将html绑定

<mp-html :content="html" ></mp-html>
注意:

这里如果想对编译后的wxml进行样式修改,可以直接通过绑定标签来编辑css,如下代码实例:

html 复制代码
<template>
	<div class="wrap">
		<mp-html :content="html" :tag-style="tagStyle" ></mp-html>
	</div>
</template>
 
<script>
	import mpHtml from 'mp-html/dist/uni-app/components/mp-html/mp-html'
	export default {
		data() {
			return {
				html: `<div id="md-editor-v-0-preview" class="md-editor-preview default-theme md-editor-scrn"><h2 data-line="0" id="新增政策">新增政策</h2>
<figure data-line="1"><img src="http://localhost:8088/static/img/2025/02/%E9%B8%A1%E5%93%A51739467171418.png" alt="" class="md-zoom medium-zoom-image"></figure>
<ul data-line="2">
<li data-line="2">孩子们我是政策1</li>
<li data-line="3">孩子们我是政策2</li>
<li data-line="4">孩子们我是政策3</li>
</ul>
<table data-line="7">
<thead data-line="7">
<tr data-line="7">
<th>Column1</th>
<th>Column2</th>
<th>Column3</th>
<th>Column4</th>
</tr>
</thead>
<tbody data-line="9">
<tr data-line="9">
<td>1.1</td>
<td>1.2</td>
<td>1.3</td>
<td>1.4</td>
</tr>
<tr data-line="10">
<td>2.1</td>
<td>2.2</td>
<td>2.3</td>
<td>2.4</td>
</tr>
</tbody>
</table>
</div>`,
         tagStyle: {
            table: 'border-top: 1px solid gray; border-left: 1px solid gray; border-collapse:collapse;margin: auto;',
            th: 'border-right: 1px solid gray; border-bottom: 1px solid gray;background-color: #eeeeee;',
            td: 'border-right: 1px solid gray; border-bottom: 1px solid gray;',
						h2: 'text-align: center;'
         }
			};
		},
		mounted() {
			
		},
		components: {
			mpHtml
		}
	};
</script>

<style>
	/* a 标签默认效果 */
	._a {
	  padding: 1.5px 0 1.5px 0;
	  color: #366092;
	  word-break: break-all;
	}
	
	/* a 标签点击态效果 */
	._hover {
	  text-decoration: underline;
	  opacity: 0.7;
	}
	
	/* 图片默认效果 */
	._img {
	  max-width: 100%;
	  -webkit-touch-callout: none;
	}
</style>

输出效果:

更多的用法可以研究下官方文档:

mphtml中文文档

相关推荐
凡科网小帆9 小时前
2026小程序商城平台哪家强,小程序商城平台选型怎么做
大数据·小程序·小程序商城平台
游戏开发爱好者813 小时前
App Store 上传 IPA 自动化,.p8 密钥认证与 CI/CD 接入实战
android·运维·ci/cd·小程序·uni-app·自动化·iphone
Greg_Zhong14 小时前
微信小程序 + 腾讯云人体分析:从 0 到 1 实现 AI 抠图打卡合照(细节待更新~)
人工智能·微信小程序·腾讯云·ai抠图-ai打卡拍照
游戏开发爱好者814 小时前
iOS 推送怎么配置,APNs 推送证书、设备库与群发
android·ios·小程序·https·uni-app·iphone·webview
snow@li15 小时前
小程序:200知识点/速查手册
小程序
不吃辣4901 天前
vibe coding | 如何做一个AI制图小程序?
人工智能·小程序·ai编程
laboratory agent开发1 天前
2026小程序服务商推荐:全域私域数字化工具选型深度解析
小程序
小码哥0681 天前
智慧物业管理系统开发详解:核心功能与源码开发优势
小程序·物业管理·物业系统
汤姆yu1 天前
基于微信小程序的方言转文字小程序的设计与实现
java·小程序·毕业设计·方言翻译
不吃辣4901 天前
vibe coding | 如何做一个 AI 闹钟小程序?
人工智能·小程序·ai编程