位置:首页 > web前端 > vue

vue的markdown语法编辑器推荐 mavonEditor

dearweb 发布:2021-08-19 15:30:43阅读:

小编亲测确实不错,给大家推荐一款支持markdown语法的编辑器-mavonEditor。

先看一下编辑器视图

image.png

视图是不是看着挺不错的,相信到这里你就会迫不及待的想去学习了吧。

mavonEditor安装

npm install mavon-editor --save

全局注册引入

在main.js里写入下面代码

// 全局注册
// import with ES6
import Vue from 'vue'
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
// use
Vue.use(mavonEditor)
new Vue({
    'el': '#main',
    data() {
        return { value: '' }
    }
})

除了全局引入,还有减少性能损耗的局部引用方法

局部引入

<template>
  <div id="app">
    <router-view />
    <mavonEditor :value="value"
                 defaultOpen='edit'
                 fontSize='16px'
                 :transition="false"
                 :toolbars="markdownOption"
                 @change="valueChange" />
  </div>
</template>

<script>
import { mavonEditor } from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
export default {
  name: 'App',
  components: {
    mavonEditor,
  },
  data() {
    return {
      value: '',
      // 设置编辑器的功能
      markdownOption: {
        preview: true, // 预览
      },
    }
  },
  methods: {
    // 监听编辑数据变化
    valueChange() {},
  },
}
</script>

api工具栏

image.png

 /*    默认工具栏按钮全部开启, 传入自定义对象    
 例如: {         
 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, // code
      table: 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, // 预览
  }

events事件绑定

name 方法名params 参数describe 描述
changeString: value , String: render编辑区发生变化的回调事件(render: value 经过markdown解析后的结果)
saveString: value , String: renderctrl + s 的回调事件(保存按键,同样触发该回调)
fullScreenBoolean: status , String: value切换全屏编辑的回调事件(boolean: 全屏开启状态)
readModelBoolean: status , String: value切换沉浸式阅读的回调事件(boolean: 阅读开启状态)
htmlCodeBoolean: status , String: value查看html源码的回调事件(boolean: 源码开启状态)
subfieldToggleBoolean: status , String: value切换单双栏编辑的回调事件(boolean: 双栏开启状态)
previewToggleBoolean: status , String: value切换预览编辑的回调事件(boolean: 预览开启状态)
helpToggleBoolean: status , String: value查看帮助的回调事件(boolean: 帮助开启状态)
navigationToggleBoolean: status , String: value切换导航目录的回调事件(boolean: 导航开启状态)
imgAddString: filename, File: imgfile图片文件添加回调事件(filename: 写在md中的文件名, File: File Object)
imgDelString: filename图片文件删除回调事件(filename: 写在md中的文件名)

代码高亮设置

如不需要hightlight代码高亮显示,你应该设置ishljs为false

开启代码高亮props
// ishljs默认为true

<mavon-editor :ishljs = "true"></mavon-editor>

image.png

图片上传的方法

<template>
    <mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor></template>
    
    exports 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);
           })
        }
    }}

通过上面的讲解,我们能够基本使用mavonEditor,下面我们介绍一下如何获取生成的内容。

我们需要先给编辑器添加ref属性,然后通过this.$refs.name 去获取编辑器的内容。

<mavonEditor 
    :value="value"
  defaultOpen='edit'
  fontSize='16px'
  :transition="false"
  :toolbars="markdownOption"
  @change="valueChange" 
  ref="md"/>

通过d_render获取html代码,通过d_value获取text内容

// 获取编辑器html代码
this.$refs.md.d_render

// 获取编辑器文本代码
this.$refs.md.d_value

以上就是mavonEditor基本使用方法,后期还会根据使用情况继续补充

24人点赞 返回栏目 提问 分享一波

小礼物走一波,支持作者

还没有人赞赏,支持一波吧

留言(问题紧急可添加微信 xxl18963067593) 评论仅代表网友个人 留言列表

暂无留言,快来抢沙发吧!

本刊热文
网友在读
手机扫码查看 手机扫码查看