当前位置: 首页 > news >正文

基于若依框架实现markdown在线编辑

基于若依框架实现markdown在线编辑

1. 下载mavon-editor

npm install mavon-editor --save

2. 打开main.js文件, 添加如下

// markdown组件
import { mavonEditor } from "mavon-editor";
import "mavon-editor/dist/css/index.css";// markdown组件
Vue.component("mavon-editor", mavonEditor);

3. 打开package.json, 找到 “dependencies”

// 添加
"mavon-editor": "^2.10.4",

4. 新建vue页面

<template><div><mavon-editor class="markdown":value="get_mark_data()":subfield="true":defaultOpen="prop.defaultOpen":toolbarsFlag="prop.toolbarsFlag":editable="prop.editable":scrollStyle="prop.scrollStyle":toolbars="toolbars":code-style="prop.codeStyle"@change="changeFn"@save="saveFn"@imgAdd="imgAddFn"language="zh"navigationishljsref="md"><!-- 左工具栏后加入自定义按钮  --><template slot="left-toolbar-after"><buttontype="button"@click="downFile()"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="下载"></button></template></mavon-editor>
</template><script>
import { saveAs } from 'file-saver'
import { saveFileAndData } from '@/utils/util'export default {data() {return {fileInfo: '',context: '',//输入的数据html: '',toolbars: {bold: true, // 粗体italic: true, // 斜体header: true, // 标题underline: true, // 下划线strikethrough: true, // 中划线mark: true, // 标记superscript: true, // 上角标subscript: true, // 下角标quote: true, // 引用ol: true, // 有序列表ul: true, // 无序列表link: true, // 链接imagelink: true, // 图片链接code: true, // codetable: true, // 表格fullscreen: true, // 全屏编辑readmodel: true, // 沉浸式阅读htmlcode: true, // 展示html源码help: true, // 帮助/* 1.3.5 */undo: true, // 上一步redo: true, // 下一步trash: true, // 清空save: true, // 保存(触发events中的save事件)/* 1.4.2 */navigation: true, // 导航目录/* 2.1.8 */alignleft: true, // 左对齐aligncenter: true, // 居中alignright: true, // 右对齐/* 2.2.1 */subfield: true, // 单双栏模式preview: true // 预览}}},created() {},computed: {prop() {let data = {subfield: false,// 单双栏模式defaultOpen: 'preview',//edit: 默认展示编辑区域 , preview: 默认展示预览区域editable: true,toolbarsFlag: true,scrollStyle: true,bold: false,codeStyle: 'code-github'}return data}},methods: {// 编辑区域内容改变changeFn(value, render) {console.log('编辑改变数据====')this.fileInfo = renderthis.html = render},// 保存的时候的事件saveFn(e) {this.fileInfo = e},// 下载.md文件downFile() {console.log('下载文件')let name = new Date()+'.md'let str = new Blob([this.fileInfo], {type: 'application/x-genesis-rom'});// 注意这里要手动写上文件的后缀名saveAs(str, name );},// 添加上传图片事件imgAddFn(pos, imgfile) {var formdata = new FormData()formdata.append('file', imgfile)// 第一步.将图片上传到服务器.saveFileAndData('yizhi-note', formdata).then(res => {// 第二步.将返回的url替换到文本原位置![...](0) -> ![...](url)/*** $vm 指为mavonEditor实例,可以通过如下两种方式获取* 1. 通过引入对象获取: `import {mavonEditor} from ...` 等方式引入后,`$vm`为`mavonEditor`* 2. 通过$refs获取: html声明ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`为 `this.$refs.md`*/// 第一种不知道为什么$vm不好使,未解决// $vm.$img2Url(pos, res);// 第二种 需要在上方添加 添加 ref = md,然后才可以使用this.$refs.md.$img2Url(pos, res.data.url)})},get_mark_data() {// return 'asd'}}
}
</script>
<style scoped>
.markdown {/*width: 700px;*/width: 100%;/* 暂时未限制高度 height: 500px;*/margin: 0 auto;
}
</style>

解析:

  1. changeFn():监听编辑区域改变数据,根据需要完善功能
  1. saveFn():保存事件,根据需要完善功能

  2. 自定义添加按钮

    <!-- 左工具栏后加入自定义按钮  --><template slot="left-toolbar-after"><buttontype="button"@click="downFile()"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="下载"></button></template>
    

    downFile():下载.md文件到本地

  3. imgAddFn():上传文件事件,这里集成了自己的oss服务器,最后用的是图片路径
    在这里插入图片描述

http://www.lryc.cn/news/167323.html

相关文章:

  • CentOS7上从0开始搭建Zookeeper集群
  • 康耐视读码器DataMan软件详细使用步骤
  • 408强化(番外)文件管理
  • iptables 防火墙配置
  • 面试官:我们深入聊聊Java虚拟机吧
  • 【电源专题】案例:异常样机为什么只在40%以下电量时与其他样机显示电量差异10%,40%以上电量差异却都在5%以内。
  • React 全栈体系(七)
  • NVIDIA 显卡硬件支持的精度模式
  • 【Java|golang】210. 课程表 II---拓扑排序
  • STM32CubeMX systick bug?
  • 徐亦达机器学习:Kalman Filter 卡尔曼滤波笔记 (一)
  • Java和vue的包含数组组件contains、includes
  • OpenCV_CUDA_VS编译安装
  • 基于减法优化SABO优化ELM(SABO-ELM)负荷预测(Matlab代码实现)
  • 记录第一个启动代码的诞生
  • 基于STM32的简化版智能手表
  • 揭秘弹幕游戏制作
  • 2327. 知道秘密的人数;1722. 执行交换操作后的最小汉明距离;2537. 统计好子数组的数目
  • 【TCPDF】使用TCPDF导出PDF文件
  • MacBook苹果电脑重装、降级系统
  • Java 解决long类型数据在前后端传递失真问题
  • IDEA的快捷键大全
  • 简单记一下Vue router 路由中使用 vue-i18n 进行标题国际化
  • 【Gitea】 Post “http://localhost:3000/api/internal/hook/pre-receive/aa/bbb“ 异常
  • 如何使用element-ui相关组件如:el-select,el-table,el-switch,el-pagination,el-dialog
  • 微信小程序+echart实现点亮旅游地图
  • Git(8)——Git命令总结
  • 9.15 滴滴笔试
  • 有趣的设计模式——适配器模式让两脚插头也能使用三孔插板
  • 2.10 PE结构:重建重定位表结构