使用MavonEditor编辑Markdown

MavonEditor是一个用于编辑markdown的JavaScript库,搭配Vue.js,非常适合博客网站,界面也很漂亮.可以使用npm安装,今天就让我们来了解一下,这个库的使用.
首先,我们安装它:

npm install mavon-editor --save

我们需要在程序的main.js中引入并注册:

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

然后可以从我们的vue文件中使用它:

<mavon-editor/>

此时界面如图所示:


然后我们需要对它进行一些配置,比如说图片的上传,删除,文章的保存和配置他的显示,首先,我们配置它显示的按钮,其中我们可以看到非常多的按钮,但有些并不是我们想要的,比如右边的那个显示HTML源代码.所以现在,我们可以通过一些配置设定每个按钮的显示.首先,在标签中配置:

<mavon-editor :toolbars="toolbars"/>

注意这里的toolbars是我们要在视图函数中定义的一个变量.
视图函数:

data(){
    return {
        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, // 帮助
            undo: true, // 上一步
            redo: true, // 下一步
            trash: true, // 清空
            save: true, // 保存(触发events中的save事件)
            navigation: true, // 导航目录
            alignleft: true, // 左对齐
            aligncenter: true, // 居中
            alignright: true, // 右对齐
            subfield: true, // 单双栏模式
            preview: true // 预览
      }
    }
}

我们只需要调整其中的属性就可以控制按钮的显示和隐藏,设置为true的显示,为false的隐藏,注意不能只设置false的,必须设置每个是true的,否则没设置的一样不显示.

现在,我们只需要将htmlcode的按钮改为false,就不会有这个按钮了.效果如图所示,可以看到,原来那个HTML按钮不见了:


接下来我们需要设置上传图片的事件,否则本地的图片是无法上传到服务器的.由于各个服务器的接口不一样,所以我这里只是讲一下上传图片的接口,展示一下我的代码.
我们可以在mavon-editor里直接配置事件,这里我要实现的功能是,上传图片时将图片同步上传到服务器,并用服务器的地址替换掉这里的地址,删除图片时同步删除服务器里的图片,我的代码:
html部分:

<mavon-editor
    v-model="value"
    :toolbars="toolbars"
    @imgAdd="addImg"
    @imgDel="delImg"
    ref="md"
/>

接口解释:
imgAdd:图片上传事件,接受参数pos图片路径,file图片文件
imgDel:图片删除事件,接受一个数组,格式为(pos,file).

    import Axios from "axios";
    addImg(pos, file) {
      var formData=new FormData();     //新建一个表单数据,用于提交文件
      formData.append("img",file);     //添加文件,参数分别是表单参数的名字和值.
      Axios.post("/api/edit/uploadImg",formData,{     //使用Axios进行上传图片
        headers:{
          "Content-Type":"multipart/form-data"    //设置请求头,更换内容类型为表单数据
        }
      }).then((response)=>{     //传输之后将url替换
        var data=response.data;     //data为响应返回的数据
        if(data.message=="no signIn"){     //如果还没有登陆
          this.$router.push("/user/signIn")     //路由跳转
        }else{     //否则
          this.$refs.md.$img2Url(pos,data.url);     //将原来的图片url替换成data.url,注意$img2Url是自带的函数.
        }
      });
      this.imgs[pos] = file;     //记录图片.
    },
    delImg(pos) {
      pos=pos[0];     //首先获取到图片的原来的url
      Axios.post("/api/edit/deleteImg?imgId="+pos);     //通过Axios删除图片
      delete this.imgs[pos];     //删除之前记录的图像字典中的数据
    }

效果如图所示:



最后就是保存工作了,我们仍然通过事件进行保存.
html:

<mavon-editor
    v-model="value"
    :toolbars="toolbars"
    @imgAdd="addImg"
    @imgDel="delImg"
    @save="save"
    ref="md"
/>

js:

save(md, html) {
  Axios.post("/api/blog/edit",{
    inner:this.value,
    title:this.title
  })
}

最后,展示一下项目完整的效果.




以上是这篇文章的全部,错误的地方恳请指正.
QQ:8955859,希望能和大家一起学习.
最后,都看到这了,赞赏一下呗!(^ ~ ^||).

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容

  • 2017.02.22 可以练习,每当这个时候,脑袋就犯困,我这脑袋真是神奇呀,一说让你做事情,你就犯困,你可不要太...
    Carden阅读 1,252评论 0 1
  • Web网站测试流程和方法(转载) 1测试流程与方法 1.1测试流程 进行正式测试之前,应先确定如何开展测试,不可盲...
    夏了夏夏夏天阅读 1,226评论 0 0
  • 一唱且把浮躁了, 乐陶陶, 看岭上云长云消 ; 晚来披星倚南桥, 月皎皎, 赏江畔花开花凋; 与风共吟逍遥调, 水...
    邱国林阅读 903评论 12 25
  • 文—冷剑风 原创 1. 前几天就在想,今天,送自己一个特别的礼物,可是因为自己的不将就,所以没能完成。 但仍然很开...
    冷剑风阅读 1,864评论 50 36
  • 网聊了一个星期之后,我们决定见面。那天的长沙灰蒙蒙的,好像被蒙上了一面纱,刚开始的天空飘着丝丝细雨,我还是在公交...
    正在上学的艺宝宝2333阅读 279评论 1 0