微信小程序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中文文档

相关推荐
www_aiyuanma_vip8 分钟前
信息安全小卫士
小程序
www_aiyuanma_vip4 小时前
家乡介绍小程序
小程序·notepad++
www_aiyuanma_vip5 小时前
信息安全小卫士(深色系版本)
小程序
博、、7 小时前
智慧场馆小程序系统实战指南:从架构设计到落地部署
小程序
冠品科技-小程序开发7 小时前
做实体的,盲盒玩法别只停留在线下
小程序·软件构建·个人开发·软件需求
2501_915106327 小时前
iOS数据采集技术详解:从性能监控到崩溃分析的全链路实践
android·ios·小程序·https·uni-app·iphone·webview
黑马程序员毕设20 小时前
基于Java的医院药品管理系统的优化设计与实现
java·开发语言·spring boot·小程序·架构·课程设计·毕设
数字游民95271 天前
史诗级更新:微信小程序支持个人主体接入虚拟支付
ai·微信小程序·小程序·opc·数字游民9527
smartpi_ai1 天前
语音模块与主控 MCU 串口对接实战:协议设计六要点,联调少走一半弯路
人工智能·小程序·语音识别
禾高网络1 天前
养老系统开发:背景、架构与养老行业展望
java·大数据·人工智能·小程序·架构