如何在Vue3快速构建自己博客的MD编辑器

简介: 推荐一款不错的开源MD编辑器

最近开始频繁尝试着如火如荼的Vue3,于是开始对之前随手写的Ant Design后台下手了,准备使用Vue3 + Element Plus 重构一波,但是之前用来写博客文章的MD编辑器还不适配Vue3,于是只好赶紧找了一个替代工具,用了一下感觉还不错,非常适合个人快速开发属于自己的编辑器。

快速开始

# 使用 npm
npm i @kangc/v-md-editor@next -S

# 使用 yarn
yarn add @kangc/v-md-editor@next

引入配置

在入口文件处配置 (如 main.ts )

import VMdEditor from '@kangc/v-md-editor'
import githubTheme from '@kangc/v-md-editor/lib/theme/github.js' // 主题

引入代码高亮:

// import hljs from 'highlight.js' // 引入全部
import hljs from 'highlight.js/lib/core'
import json from 'highlight.js/lib/languages/json'
import javascript from 'highlight.js/lib/languages/javascript'
import typescript from 'highlight.js/lib/languages/typescript'
hljs.registerLanguage('json', json)
hljs.registerLanguage('javascript', javascript)
hljs.registerLanguage('typescript', typescript)

highlightjs 全部代码高亮支持文档 -> Github

VMdEditor.use(githubTheme, {
  Hljs: hljs,
})
app.....
  .use(VMdEditor) // 富文本编辑器
  .mount('#app')

在需要使用插件的页面文件中引入样式文件 (如果多处使用也可以在 main.ts 直接引入)

import '@kangc/v-md-editor/lib/style/base-editor.css'
import '@kangc/v-md-editor/lib/theme/style/github.css'

图片上传

默认不带图片上传的功能,写入一个参数及回调即可开启:

<v-md-editor ...... :disabled-menus="[]" @upload-image="handleUploadImage" />

在回调函数中即可拿到上传图片的File文件,截图粘贴也是可以触发回调的:

const handleUploadImage = (event: any, insertImage: any, files: File) => {
      // TODO: 在这里将二进制文件上传到服务器
      Notification.success('图片上传成功')
      // 通过回调中的 insertImage 向文本输入图片地址
      insertImage({
        url: '', // 服务器上传成功后的图片url
      })
    }

自动保存

自动保存的实现是利用定时器,做一个节流调取保存方法。

image.png

有两种实现方式:

1. watch

watch: {
    content (val) {
      // 无操作10秒后自动保存
      if (this.updateTimer) {
            clearTimeout(this.updateTimer)
        }
        this.updateTimer = setTimeout(() => {
            this.save()
            this.updateTimer = null
        }, 10000)
    }
  }

2. md插件自带的回调

<v-md-editor ..... @change="textChange" />

image.png

    // 自动保存
    let updateTimer: any = undefined
    const textChange = () => {
      if (updateTimer) {
        clearTimeout(updateTimer)
      }
      updateTimer = setTimeout(() => {
        save(true)
        updateTimer = undefined
      }, 10000)
    }

效果预览

vue2 旧版 vue3 重构
image.png image.png
相关文章
|
3月前
|
开发框架 JavaScript 前端开发
百度富文本编辑器配置(vue3)
百度富文本编辑器配置(vue3)
|
3月前
|
XML 前端开发 JavaScript
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
前端图形学实战: 从零实现编辑器的图层管理面板和实时缩略图(vue3 + vite版)
71 0
|
12月前
|
前端开发
vue3 中wangEditor富文本编辑器上传图片功能
vue3 中wangEditor富文本编辑器上传图片功能
389 0
|
资源调度
Vue3富文本编辑器wangEditor 5使用总结
Vue3富文本编辑器wangEditor 5使用总结
745 0
|
4天前
Vue3项目引入 vue-quill 编辑器组件并封装使用
本文介绍了如何在Vue3项目中引入并封装使用`vue-quill`富文本编辑器组件,包括安装配置、父页面实现、子组件设计以及使用方法和效果展示。
65 0
Vue3项目引入 vue-quill 编辑器组件并封装使用
|
1月前
|
JSON JavaScript 数据格式
文本-----wangEditor的使用,设置和获取内容,展示HTML无样式怎么办????console同步展示怎样写,Vue的配置在Vue3配置文件中的配置,是editor中的v-model绑定的值
文本-----wangEditor的使用,设置和获取内容,展示HTML无样式怎么办????console同步展示怎样写,Vue的配置在Vue3配置文件中的配置,是editor中的v-model绑定的值
文本---富文本编辑器------Vue3使用富文本编辑器,Quill,全局样式和组件和样式的写法
文本---富文本编辑器------Vue3使用富文本编辑器,Quill,全局样式和组件和样式的写法
|
JavaScript
Vue3项目中使用富文本编辑器
Vue3项目中使用富文本编辑器
359 0
|
10月前
|
机器学习/深度学习 Cloud Native Go
猫头虎博客带您使用Markdown编辑器
猫头虎博客带您使用Markdown编辑器
79 1