首页 > 其他分享 >vue引用MarkDown(mavonEditor)编辑器,文档

vue引用MarkDown(mavonEditor)编辑器,文档

时间:2022-10-21 20:16:05浏览次数:53  
标签:mavon MarkDown vue url html mavonEditor editor true

mavonEditor

Install mavon-editor (安装)

 npm install mavon-editor --save

如何引入:

全局引用:

    // 全局注册
    import Vue from 'vue'
    import mavonEditor from 'mavon-editor'
    import 'mavon-editor/dist/css/index.css'
    // use
    Vue.use(mavonEditor)
    new Vue({
      router,
      store,
      render: (h) => h(App),
    }).$mount("#app");

不全局引用,在组件中引用 :

<template>
  <div>
    <div>
      <mavon-editor  class="comments"
        v-model="content"
        :subfield="false"
        ref="md"
        :toolbars="markdownOption"
        @change="change"
      />
      <div>
        <button @click="submit">提交</button>
      </div>
    </div>
  </div>
</template>
<script>
  import { mavonEditor } from 'mavon-editor'
  import 'mavon-editor/dist/css/index.css'
  export default {
      data(){
        return{
          content:'', // 输入的markdown
          html:'',    // 及时转的html
          markdownOption:{ //自定义文本标签
                bold: true, // 粗体
                italic: true,// 斜体
                strikethrough: true, // 中划线
                underline: true, // 下划线
          }
        }
      }
      components:{
          mavonEditor,
      },
      methods:{
        // 所有操作都会被解析重新渲染
        change(value, render){
            // render 为 markdown 解析后的结果[html]
            this.html = render;
        },
        submit(){
            console.log("提交");
        },
      }
  }
</script>

图片上传:

用 mavon-editor 自带的 imgAdd 属性将图片上传到服务器,将返回的地址替换到md当中  
<template>
  <div>
    <div>
      <mavon-editor  class="comments"
        v-model="content"
        :subfield="false"
        @imgAdd="$imgAdd"
        ref="md"
        :toolbars="markdownOption"
        @change="change"
      />
      <div>
        <button @click="submit">提交</button>
      </div>
    </div>
  </div>
</template>
<script>
  import { mavonEditor } from 'mavon-editor'
  import 'mavon-editor/dist/css/index.css'
  export default {
      data(){
        return{
          content:'', // 输入的markdown
          html:'',    // 及时转的html
          markdownOption:{ //自定义文本标签
                bold: true, // 粗体
                italic: true,// 斜体
                strikethrough: true, // 中划线
                underline: true, // 下划线
          }
        }
      }
      components:{
          mavonEditor,
      },
      methods:{
        // 所有操作都会被解析重新渲染
        change(value, render){
            // render 为 markdown 解析后的结果[html]
            this.html = render;
        },
        submit(){
            console.log("提交");
        },
       // 将图片上传到服务器,返回地址替换到md中

        $imgAdd(pos, $file){
            console.log($file)
            let formdata = new FormData();
            formdata.append('file',$file)
            this.$axios.post('上传服务器链接', formdata).then(res => {
                console.log(res.data.url);
                this.$refs.md.$img2Url(pos, res.data.url);
            }).catch(err => {
                console.log(err)
            })
        },
      }
  }
</script>

 

图片删除:

图片删除的逻辑实现和代码都很简单:前端传给后端url全路径,后端接收并调用删除方法即可。

前端代码:

imgDel(pos){
	//通过pos[0]取出文件路径。
     let url = pos[0]
     /*调用axios发送请求。此处自己自行创建了一个header键值进行数据传递*/
     axios({
         url:'http://localhost/api/file/imgDel',
         method:'POST',
         headers:{'Img-Delete': url},
     }).then().catch(error=>{this.$message({message:error,type:'error',showClose:true,center:true})})
}

对应后端:

@PostMapping("imgDel")
public Result articleImgDel(@RequestHeader("Img-Delete")String url){
    if(url.isEmpty()){
        return Result.fail(ErrorCode.PARAMS_ERROR.getCode(), ErrorCode.PARAMS_ERROR.getMsg());
    }
    qiniuUtils.delete(url); //删除云服务器文件
    return Result.success(null);
}
     

标签:mavon,MarkDown,vue,url,html,mavonEditor,editor,true
From: https://www.cnblogs.com/LiuSan/p/16814633.html

相关文章

  • vue题库
    1、用index作为key可能会引发的问题1、若对数据进行:逆序添加/逆序删除等破坏顺序的操作,会产生没有必要的真实DOM更新,界面效果虽然没有问题,但是数据过多的话,会效率过低;......
  • Markdown使用方法
    Markdown是一种轻量级标记语言,排版语法简洁,让人们更多地关注内容本身而非排版。它使用易读易写的纯文本格式编写文档,可与HTML混编,可导出HTML、PDF以及本身的.md格式......
  • vue2.0中svg图片的引用
    1、基础工作都是引用了svg-sprite-loader这个插件  npmisvg-sprite-loader--save2、写一个Svglcon的组件(components/Svglcon),在components目录下新建一个SvgIcon文......
  • 为什么vue3要选用proxy,好处是什么?
    提问Object.defineProperty()和proxy的区别?为什么vue3要选用proxy,好处是什么?proxyProxy对象用于创建一个对象的代理,从而实现基本操作的拦截和自定义(如属性查找、赋......
  • vue官方文档解读
    参考:https://cn.vuejs.org/guide/introduction.htmlhttps://blog.csdn.net/weixin_42371679/article/details/112408800vue是一个js库,它基于标准html、css和js,并提供了......
  • vue-code-diff 实现版本对比,带内容覆盖(仅组件,待完善内容解析)
    <template><divclass="version-diff-content"><divclass="version-diff-top"><div><el-selectv-model="versionDiffSelected.selectOne.versi......
  • Chrome 浏览器安装Vue插件方法
    谷歌浏览器扩展程序 首先去github下载vue.zip文件插件 下载地址:https://github.com/vuejs/vue-devtools不要去下载默认分支的 下载后解压验证npm是否安装成......
  • 面试题vue组件的相关问题
    面试题vue组件的相关问题什么是组件什么是组件:组件(Component)是Vue.js最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。一个页面可以由多个组件构成,......
  • vue中执行异步函数async和await的用法
    一、async基础用法async函数,会返回一个promise对象,可以用.then调用async函数中return的结果asyncfunctionhelloAsync(){return"返回结果";}con......
  • 只需三步 带你了解 Vue事件总线(EventBus)
    第一步:直接在项目中的 main.js 初始化 EventBus ://main.jsVue.prototype.$EventBus=newVue()第二步:找到两个页面A和B,A向B发送事件<!--A.vue--><templat......