Vue集成MarkDown

1.编辑部分

1.下载资源包

复制代码
npm install mavon-editor --save

2.main.js配置

js 复制代码
importmavonEditorfrom 'mavon-editor';
 import'mavon-editor/dist/css/index.css';
 Vue.use(mavonEditor);

3.组件引入对应的Vue文件

vue 复制代码
<mavon-editor ref="md" v-model="form.content" :toolbars="toolbars"
 @imgAdd="imgAdd" @imgDel="imgDel"/>

4.再data中定义工具栏

js 复制代码
toolbars:{
     bold:true,//粗体
    italic:true,//斜体
    header:true,//标题
    underline:true,//下划线
    strikethrough:true,//中划线
    mark:true,//标记
    quote:true,//引用
    ol:true, //有序列表
    ul:true, //无序列表
    link:true,//链接
    imagelink:true,//图片链接
    code:true,// code
     table:true,//表格
    fullscreen:true,//全屏编辑
    readmodel:true,//沉浸式阅读
    htmlcode:true, //展示html源码
    help:true,//帮助
    undo:true,//上一步
    redo:true,//下一步
    trash:true,//清空
    save:false,//保存(触发events中的save事件)
    navigation:true,//导航目录
    subfield:true, //单双栏模式
    preview:true//预览
}

tips:markdown关于上传与删除图片

js 复制代码
imgAdd(pos, file) {
				var formdata = new FormData();
				formdata.append('file', file); //前端封装图片数据 'file'向后端传递的 name
				this.$http({ //调用 java 后端上传图片到服务器端
					url: this.serverAddress+'uploadImg', //自定义后端服务器地址,后端同文件上传功能
					data: formdata,
					method: "post",
					headers: {
						'Content-Type': 'multipart/form-data',
						'adminToken': this.adminToken
					},
				}).then((resp) => { //resp 后端响应数据
					//将服务器返回的图片地址插入到编辑器内
					this.$refs.md.$img2Url(pos, resp.data.data);
				})
			},
			imgDel(pos) {
				var imgUrl = pos[0]; //获取到图片服务器地址
				alert(imgUrl);
				this.$http.get("adminApi/newsCtl/deleteImg", {
						params: {
							imgUrl: JSON.stringify(imgUrl)
						}
					})
					.then(function(res) {
						//删除回调
						if (res.code == 200) {
							this.$message({
								message: res.message,
								type: 'success'
							});
						}
					})
					
			}

2.前台展示配置

显示使用markdown格式

1.下载组件

复制代码
npm install --save showdown

2.配置 main.js

js 复制代码
//markdown 格式转为html组件
import showdown from 'showdown'
Vue.prototype.converter = new showdown.Converter();

3.显示模块

vue 复制代码
<mavon-editor v-html="newsDetail.content" ref="md"
style="white-space: pre-wrap !important;
word-wrap: break-word !important;
padding: 10px;"/>

4.对后端传来的数据进行修改格式

js 复制代码
this.$http.get("indexApi/indexCtl/newsDetail?id="+this.id).then((resp) => {
				if (resp.data.code == 200) {
					this.newsDetail = resp.data.data;
					this.newsDetail.content = this.converter.makeHtml(resp.data.data.content);
				}
			})
相关推荐
万少1 小时前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
橙序员小站4 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
炫饭第一名6 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
王晓枫6 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊6 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter7 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
曲折7 小时前
Cesium-气象要素PNG色斑图叠加
前端·cesium
Forever7_7 小时前
Electron 淘汰!新的桌面端框架 更强大、更轻量化
前端·vue.js
不会敲代码17 小时前
前端组件化样式隔离实战:React CSS Modules、styled-components 与 Vue scoped 对比
css·vue.js·react.js
Angelial7 小时前
Vue3 嵌套路由 KeepAlive:动态缓存与反向配置方案
前端·vue.js