返回

解锁简洁 Markdown 编辑器:Vue中集成simplemde

前端

Vue与simplemde强强联合,为你带来兼具简约性和实用性的Markdown编辑器。它不仅仅能满足你的基本书写需求,还贴心地添加了图片上传功能,甚至支持直接拖拽或粘贴图片。现在,让我们一起踏上构建之旅,打造专属于你的Markdown编辑器!

首先,我们需要在Vue项目中安装simplemde:

npm install --save simplemde

安装完成后,在组件中引入simplemde:

import SimpleMDE from 'simplemde'

接下来,我们需要创建一个Vue组件来封装编辑器:

<template>
  <div>
    <simplemde ref="simplemde"></simplemde>
  </div>
</template>

<script>
export default {
  mounted() {
    this.simplemde = new SimpleMDE({
      element: this.$refs.simplemde,
      spellChecker: false,
      toolbar: [
        'bold',
        'italic',
        'heading',
        '|',
        'quote',
        'unordered-list',
        'ordered-list',
        '|',
        'link',
        'image',
        '|',
        'preview',
        'fullscreen'
      ]
    })
  },
  methods: {
    getValue() {
      return this.simplemde.value()
    }
  }
}
</script>

在这个组件中,我们实例化了simplemde编辑器,并配置了工具栏和拼写检查等选项。

现在,我们需要在Vue组件中使用这个编辑器:

<template>
  <div>
    <my-simplemde></my-simplemde>
  </div>
</template>

<script>
import MySimpleMDE from './MySimpleMDE.vue'

export default {
  components: {
    MySimpleMDE
  }
}
</script>

这样,我们就完成了simplemde编辑器的基本集成。接下来,让我们添加图片上传功能。

首先,我们需要在服务器端创建一个接口来处理图片上传。然后,在Vue组件中,我们可以使用FormData对象将图片文件发送到服务器端。

methods: {
  uploadImage() {
    const formData = new FormData()
    formData.append('image', this.$refs.imageInput.files[0])

    axios.post('/api/upload-image', formData)
      .then(response => {
        this.simplemde.value(this.simplemde.value() + `![image](${response.data.url})`)
      })
  }
}

在这个方法中,我们创建了一个FormData对象,并将图片文件添加到其中。然后,我们使用axios发送POST请求到服务器端的接口,并获取图片的URL。最后,我们将图片的URL插入到编辑器中。

最后,让我们添加直接拖拽或粘贴图片的功能。

首先,我们需要在编辑器中启用拖拽功能:

toolbar: [
  ...
  'drag-drop'
  ...
]

然后,我们需要在Vue组件中监听拖拽事件:

mounted() {
  this.simplemde = new SimpleMDE({
    ...
    dropZone: this.$refs.simplemde,
    ...
  })
}

这样,我们就启用了直接拖拽图片的功能。

对于粘贴图片,我们可以使用simplemde提供的pasteImageRaw方法:

methods: {
  pasteImage() {
    this.simplemde.pasteImageRaw()
  }
}

在这个方法中,我们调用了simplemde提供的pasteImageRaw方法,即可实现粘贴图片的功能。

至此,我们已经完成了一个集简洁与功能性于一身的Markdown编辑器,既支持图片上传,又能直接拖拽或粘贴图片。希望这个教程对你有所帮助!