场景

若依前后端分离版手把手教你本地搭建环境并运行项目:

若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_若依前后端分离

在上面的基础上,怎样实现markdown在线编辑功能。

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

1、插件地址

mavon-editor - npm

2、安装插件

npm install mavon-editor --save

3、全局引入组件

按照官方文档指示在index.js中

在这里打开main.js

//引入mavonEditor
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
// use
Vue.use(mavonEditor)

4、新建vue页面并修改代码如下

<template><mavon-editor v-model="value"/>
</template><script>export default {name: "mavonEditorDemo",data () {return {value: '公众号:霸道的程序猿'}},
}
</script>

5、API文档

name 名称 type 类型 default 默认值 describe 描述
value String 初始值
language String zh-CN 语言选择,暂支持 zh-CN: 简体中文, zh-TW: 正体中文 , en: 英文 , fr: 法语, pt-BR: 葡萄牙语, ru: 俄语, de: 德语, ja: 日语
fontSize String 14px 编辑区域文字大小
scrollStyle Boolean true 开启滚动条样式(暂时仅支持chrome)
boxShadow Boolean true 开启边框阴影
boxShadowStyle String 0 2px 12px 0 rgba(0, 0, 0, 0.1) 边框阴影样式
transition Boolean true 是否开启过渡动画
toolbarsBackground String #ffffff 工具栏背景颜色
previewBackground String #fbfbfb 预览框背景颜色
subfield Boolean true true: 双栏(编辑预览同屏), false: 单栏(编辑预览分屏)
defaultOpen String 在单栏(subfield=false)时默认展示区域.
edit: 默认展示编辑区域,
preview: 默认展示预览区域
其他 = edit
placeholder String 开始编辑... 输入框为空时默认提示文本
editable Boolean true 是否允许编辑
codeStyle String code-github markdown样式: 默认github, 可选配色方案
toolbarsFlag Boolean true 工具栏是否显示
navigation Boolean false 默认展示目录
shortCut Boolean true 是否启用快捷键
autofocus Boolean true 自动聚焦到文本框
ishljs Boolean true 代码高亮
imageFilter function null 图片过滤函数,参数为一个File Object,要求返回一个Booleantrue表示文件合法,false表示文件不合法
imageClick function null 图片点击事件,默认为预览,可覆盖
tabSize Number \t tab转化为几个空格,默认为\t
html Boolean true 启用HTML标签,因为历史原因这个标记一直默认为true,但建议不使用HTML标签就关闭它,它能彻底杜绝安全问题。
xssOptions Object {} xss规则配置, 默认开启,设置false可以关闭,开启后会对HTML标签进行过滤,默认过滤所有HTML标签属性,建议按需配置白名单减少被攻击的可能。
- 自定义规则参考: 自定义过滤规则 - 根据白名单过滤HTML(防止XSS攻击)
- 参考DEMO: dev-demo
toolbars Object 如下例 工具栏

toolbars

默认工具栏按钮全部开启, 传入自定义对象,可以选择启用部分按钮

/*例如: {bold: true, // 粗体italic: true,// 斜体header: true,// 标题}此时, 仅仅显示此三个功能键
*/
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, // 预览
}

如果需要自定义添加工具栏按钮,可以通过以下方式

<mavon-editor><!-- 左工具栏前加入自定义按钮 --><template slot="left-toolbar-before"><buttontype="button"@click="$click('test')"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="自定义"></button></template><!-- 左工具栏后加入自定义按钮  --><template slot="left-toolbar-after"><buttontype="button"@click="$click('test')"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="自定义"></button></template><!-- 右工具栏前加入自定义按钮  --><template slot="right-toolbar-before"><buttontype="button"@click="$click('test')"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="自定义"></button></template><!-- 右工具栏后加入自定义按钮  --><template slot="right-toolbar-after"><buttontype="button"@click="$click('test')"class="op-icon fa fa-mavon-align-left"aria-hidden="true"title="自定义"></button></template>
</mavon-editor>

events 事件绑定

name 方法名 params 参数 describe 描述
change String: value , String: render 编辑区发生变化的回调事件(render: value 经过markdown解析后的结果)
save String: value , String: render ctrl + s 的回调事件(保存按键,同样触发该回调)
fullScreen Boolean: status , String: value 切换全屏编辑的回调事件(boolean: 全屏开启状态)
readModel Boolean: status , String: value 切换沉浸式阅读的回调事件(boolean: 阅读开启状态)
htmlCode Boolean: status , String: value 查看html源码的回调事件(boolean: 源码开启状态)
subfieldToggle Boolean: status , String: value 切换单双栏编辑的回调事件(boolean: 双栏开启状态)
previewToggle Boolean: status , String: value 切换预览编辑的回调事件(boolean: 预览开启状态)
helpToggle Boolean: status , String: value 查看帮助的回调事件(boolean: 帮助开启状态)
navigationToggle Boolean: status , String: value 切换导航目录的回调事件(boolean: 导航开启状态)
imgAdd String: filename, File: imgfile 图片文件添加回调事件(filename: 写在md中的文件名, File: File Object)
imgDel String: filename 图片文件删除回调事件(filename: 写在md中的文件名)

代码高亮

开启代码高亮props

<!-- ishljs默认为true -->
<mavon-editor :ishljs="true"></mavon-editor>

6、图片上传

图片上传

<template><mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor>
</template>
<script>
export default {methods: {// 绑定@imgAdd event$imgAdd(pos, $file){// 第一步.将图片上传到服务器.var formdata = new FormData();formdata.append('image', $file);axios({url: 'server url',method: 'post',data: formdata,headers: { 'Content-Type': 'multipart/form-data' },}).then((url) => {// 第二步.将返回的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.$img2Url(pos, url);})}}
}
</script>

快捷键

key keycode 功能
F8 119 开启/关闭导航
F9 120 预览/编辑切换
F10 121 开启/关闭全屏
F11 122 开启/关闭阅读模式
F12 123 单栏/双栏切换
TAB 9 缩进
CTRL + S 17 + 83 触发保存
CTRL + D 17 + 68 删除选中行
CTRL + Z 17 + 90 上一步
CTRL + Y 17 + 89 下一步
CTRL + BreakSpace 17 + 8 清空编辑
CTRL + B 17 + 66 **加粗**
CTRL + I 17 + 73 *斜体*
CTRL + H 17 + 72 # 标题
CTRL + 1 17 + 97 or 49 # 标题
CTRL + 2 17 + 98 or 50 ## 标题
CTRL + 3 17 + 99 or 51 ### 标题
CTRL + 4 17 + 100 or 52 #### 标题
CTRL + 5 17 + 101 or 53 ##### 标题
CTRL + 6 17 + 102 or 54 ###### 标题
CTRL + U 17 + 85 ++下划线++
CTRL + M 17 + 77 ==标记==
CTRL + Q 17 + 81 > 引用
CTRL + O 17 + 79 1. 有序列表
CTRL + L 17 + 76 [链接标题](链接地址)
CTRL + ALT + S 17 + 18 + 83 ^上角标^
CTRL + ALT + U 17 + 18 + 85 - 无序列表
CTRL + ALT + C 17 + 18 + 67 ``` 代码块
CTRL + ALT + L 17 + 18 + 76 ![图片标题](图片链接)
CTRL + ALT + T 17 + 18 + 84 表格
CTRL + SHIFT + S 17 + 16 + 83 下角标
CTRL + SHIFT + D 17 + 16 + 68 ~~中划线~~
CTRL + SHIFT + C 17 + 16 + 67 居中
CTRL + SHIFT + L 17 + 16 + 76 居左
CTRL + SHIFT + R 17 + 16 + 82 居右
SHIFT + TAB 16 + 9 取消缩进

Vue中使用mavonEditor插件实现markdown在线编辑相关推荐

  1. Vue中使用vue-codemirror插件实现代码在线编辑

    场景 若依前后端分离版手把手教你本地搭建环境并运行项目: 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客_若依前后端分离 在上面的基础上,怎样实现代码在线编辑功能. ...

  2. Vue中使用can-autoplay插件实现浏览器不支持自动播放音频时提示点击

    场景 Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音): Vue中使用speak-tts插件实现点击按钮后进行语音播报(TTS/文字转语音)_BADAO_LIUMAN ...

  3. Vue中引入swiper插件报错:To install it, you can run: npm install --save swiper/css/swiper.css

    Vue中引入swiper插件报错:To install it, you can run: npm install --save swiper/css/swiper.css 今天在写项目的时候用到了Sw ...

  4. 解决vue中使用swiper插件——李帅醒博客

    解决vue中使用swiper插件,在引入swiper插件后,发现无法正常运行 这次我们模拟从后台取下数据,然后数据绑定在swiper标签中. <template><div class ...

  5. 快速入门在Vue中使用滑动插件Swiper

    前言 swiper 开源.免费.强大的滑动插件. swiper中文网 https://www.swiper.com.cn/ Swiper4中文API https://www.swiper.com.cn ...

  6. 面试官:Vue中组件和插件有什么区别?

    一.组件是什么 回顾一下对组件的定义: 组件就是把图形.非图形的各种逻辑均抽象为一个统一的概念(组件)来实现开发的模式,在Vue中每一个.vue文件都可以视为一个组件 组件的优势 降低整个系统的耦合度 ...

  7. 第十三篇 VUE中使用头像插件 multiavatar,超级有趣的头像生成插件,提升开发的乐趣

    最近在开发中,看到一个很有趣的插件-multiavatar,查看了一下官方,功能很强大,能够依据输入的内容,随机进行生成一个头像,觉得特别的有乐趣,特在这分享一下. 官方地址:multiavatar ...

  8. vue-layer,在vue中的layer插件

    npm install vue-layer 在程序入口添加 importVuefrom'vue';importlayer from'vue-layer'Vue.prototype.$layer=lay ...

  9. Vue中使用vue-croper插件实现图片上传裁剪并传到SpringBoot后台接口

    场景 前后端分离的项目,前端修改头像时,需要对头像进行裁剪并且能实时预览,然后上传到SpringBoot后台. 实现效果如下 注: 博客: https://blog.csdn.net/badao_li ...

最新文章

  1. GMM高斯混合模型学习笔记(EM算法求解)
  2. Linux下网络流量实时监控工具大全
  3. 牛客多校2 - Interval(网格图最大流转换为对偶图最短路)
  4. spring boot 分布式锁组件 spring-boot-klock-starter
  5. Visualbox中linux的网络配置
  6. 100小时学会SAP-读书笔记(CO)
  7. “仿QQ局域网聊天软件”项目-常用编程技巧总结
  8. Windows下制作DOS启动U盘的方法
  9. Steamwoks上传游戏及提交审核指南
  10. 学完计算机控制系统的感受,管理信息系统学习心得体会(精选5篇)
  11. 已解决json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
  12. C++之Queue容器初学
  13. Android返回桌面代码,安卓 双击返回键 返回桌面
  14. 视频号网站微信视频下载方法
  15. Python动态网页爬虫-----动态网页真实地址破解原理
  16. [Oracle 11g r2(11.2.0.4.0)]集群守护进程CSS资源管理
  17. 分享RTFM和STFW的意思
  18. 如何写一篇人工智能领域的期刊论文(SCI论文的固定模式和一些套路)
  19. squirrelmail 小松鼠的安装和配置
  20. 【2056】最大的数

热门文章

  1. Web 开发最有用的50款 jQuery 插件集锦——《图片特效篇》
  2. 微信小程序开发实例:猜数字小游戏
  3. 使用outlook 2007配置microsoft exchange邮箱方法步骤
  4. 抖音xg8404 X-Gorgon算法 IOS苹果协议算法
  5. Take Me To Your Heart by MLTR
  6. weblogic 配置WtC The following failures occurred: -- [WTC:180137]The NWAddr attribute on the WTCServer
  7. c#创建画布_C#GDI+编程基础(一:Graphics画布类)
  8. Android应用内换肤
  9. 要想通过面试,MySQL的Limit子句底层原理你不可不知
  10. Appium 手机 App 自动化代码说明_启动微信app