轻量级富文本编辑器wangEditor结合vue使用方法示例

下面是关于“轻量级富文本编辑器wangEditor结合vue使用方法示例”的完整攻略:

简介

wangEditor 是一个轻量级的基于javascript开发的富文本编辑器,使用方便、功能强大,适合于各种类型的Web项目。本文将讲解如何在vue项目中使用wangEditor.

安装 wangEditor 和 vue

首先需要在项目中安装wangEditor和vue,可以通过npm进行安装:

npm install wangeditor --save
npm install vue --save

安装完毕后,在项目中引入wangEditor和vue:

import Vue from 'vue'
import WangEditor from 'wangeditor'

在组件中使用 wangEditor

在vue的组件中可以使用wangEditor,我们可以在 vue 的 mounted 生命周期函数中初始化编辑器。

<template>
  <div>
    <div ref="editor" id="editor"></div>
  </div>
</template>

<script>
export default {
  mounted() {
    let editor = new WangEditor(this.$refs.editor)

    // 配置编辑器相关选项
    editor.config.menus = ['bold', 'underline', 'italic', 'head', 'link', 'list', 'justify']
    editor.create()
  }
}
</script>

在上述示例代码中,我们在mounted生命周期函数中使用this.$refs.editor获取到我们在模板中定义的div节点。然后,我们实例化一个WangEditor对象,并配置了编辑器相关选项。最后,我们调用了editor.create()方法,使编辑器在文档加载完后进行初始化。

获取编辑器中的内容

编辑器初始化完毕,我们可以使用editor.txt.text()方法来获取编辑器中的纯文本内容,使用editor.txt.html()方法来获取编辑器中的html文本内容。

<template>
  <div>
    <div ref="editor" id="editor"></div>
    <p>纯文本内容:{{ content.text }}</p>
    <p>html文本内容:{{ content.html }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      content: {
        text: '',
        html: ''
      }
    }
  },
  mounted() {
    let _this = this;
    let editor = new WangEditor(this.$refs.editor)

    editor.config.menus = ['bold', 'underline', 'italic', 'head', 'link', 'list', 'justify']
    editor.onchange = function() {
      _this.content = {
        text: editor.txt.text(),
        html: editor.txt.html()
      }
    }
    editor.create()
  }
}
</script>

在上述示例代码中,我们通过监听editoronchange事件,当编辑器内容发生改变时,我们可以使用editor.txt.text()editor.txt.html()方法获取编辑器中的内容并保存到content对象中。然后,在模板中显示这些内容。

配置编辑器中的图片上传

默认情况下,wangEditor中并没有自带图片上传的功能,需要进行自定义配置来实现。这里我给出一个简单的示例来演示如何使用vue和wangEditor实现图片上传。

<template>
  <div>
    <div ref="editor" id="editor"></div>
  </div>
</template>

<script>
export default {
  mounted() {
    let editor = new WangEditor(this.$refs.editor)
    let _this = this;

    editor.config.uploadImgServer = 'http://localhost:4000/upload' // 后端接口上传图片
    editor.config.uploadImgLimit = 5 // 上传图片数量限制
    editor.config.uploadImgHooks = {
      customInsert: function(insertImgFn, result, editor) {
        let imgUrl = result.data.url
        editor.cmd.do('insertHtml', `<img src="${imgUrl}" style="max-width:100%;"/>`)
      }
    }

    editor.create()

    // 图片上传
    editor.$txt.on('change keyup', function() {
      let imgs = _this.$refs.editor.querySelectorAll('img')
      if (imgs && imgs.length > 0) {
        for (let i = 0; i < imgs.length; i++) {
          if (imgs[i].hasAttribute('data-file-id')) {
            continue
          }
          imgs[i].setAttribute('data-file-id', i + 1)
          let formData = new FormData()
          formData.append('file', imgs[i].src)
          formData.append('id', `${i + 1}`)
          _this.uploadImg(formData) 
        }
      }
    })
  },

  methods: {
    uploadImg(formData) {
      let _this = this
      this.$axios.post('http://localhost:4000/upload', formData, {
        headers: {
          'Content-Type': 'multipart/form-data'
        }
      }).then(resp => {
        let res = resp.data
        if (res.status === 0) {
          _this.$message({message: res.msg, type: 'success'})
          let img = _this.$refs.editor.querySelectorAll(`img[data-file-id="${res.fileId}"]`)
          if (img) {
            img[0].removeAttribute('data-file-id')
            img[0].src = res.data.url
          }
        } else {
          _this.$message({message: res.msg, type: 'error'})
        }
      })
    }
  }
}
</script>

在上述代码中,我们通过设置uploadImgServer配置项来实现图片上传,函数属性uploadImgHooks提供了自定义插入图片回调函数的接口,可以利用该函数将上传的图片解析后加入到编辑器中。可以根据需求来自定义这个函数实现插入图片的逻辑。

总结

至此,我们已经学习了如何使用wangEditor在vue项目中进行富文本编辑器的开发,并且实现了文本编辑器中插入图片的功能。wangEditor是一款比较好上手、提供了比较多扩展接口的富文本编辑器,使用方便,值得推荐。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:轻量级富文本编辑器wangEditor结合vue使用方法示例 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 修改vue源码实现动态路由缓存的方法

    下面是详细的攻略: 修改Vue源码实现动态路由缓存的方法 Vue.js 是一个非常优秀的 JavaScript MVVM 框架。Vue.js 的特点是易学易用、轻量级、高效、灵活。在 Vue.js 中,路由系统一直是其重要的一部分。在 Vue.js 中,我们可以非常方便地配置和管理路由,并且支持动态路由的加载和懒加载。Vue.js 还提供了一些有用的路由钩子…

    Vue 2023年5月28日
    00
  • Vue路由vue-router用法讲解

    首先需要明确的是Vue Router是Vue.js官方的路由管理器,用于实现单页应用(SPA)的路由功能。下面我将详细讲解Vue Router的用法。 一、Vue Router的基本使用 1. 安装 使用Vue Router需要先安装它。可以通过以下命令行安装最新版本的Vue Router: npm install vue-router 安装完成后,在需要使…

    Vue 2023年5月27日
    00
  • vue中的get方法\post方法如何实现传递数组参数

    传递数组参数是前端开发中非常常见的需求,vue中的get和post方法也是我们日常开发中最常使用的API请求方式之一。下面是具体步骤: 一、利用axios的方式发送请求(Vue-Axios) 安装axios和Vue-Axios npm install axios vue-axios –save 在Vue中全局引入axios import Vue from …

    Vue 2023年5月29日
    00
  • Vue插件写、用详解(附demo)

    下面我将详细讲解“Vue插件的编写和使用”。 Vue插件编写 什么是Vue插件? 简单来讲,Vue插件就是一个功能模块,用于为Vue应用增加新的特性和功能。一个Vue插件通常由以下两部分组成: 插件实例对象:定义插件的具体实现细节,如Vue的Router插件就包含了路由配置、路由匹配等操作; 插件的安装方法:用于将插件实例对象注入到Vue应用中。 插件实例对…

    Vue 2023年5月27日
    00
  • vue.js实例对象+组件树的详细介绍

    “Vue.js实例对象+组件树的详细介绍”是Vue.js框架的基础内容之一,它关乎着构建整个Vue.js应用程序的基本理解。在本文中,我将详细介绍Vue.js实例对象和组件树的概念,以及如何创建和使用它们。 Vue.js实例对象 Vue.js实例对象是一个VM(ViewModel)的实例,VM是Vue.js框架的核心概念,它也是MVVM(Model-View…

    Vue 2023年5月28日
    00
  • vue如何把组件方法暴露到window对象中

    把Vue组件方法暴露到window对象中可以让全局代码可以使用该Vue组件中的方法,这对于项目的复杂度和开发效率有着很大的帮助。以下是详细的攻略: 第一步:在组件中定义可以暴露的方法 首先,在Vue组件中定义要暴露的方法: <template> <div> <button @click="sayHello()&quot…

    Vue 2023年5月28日
    00
  • VUE组件简明讲解

    首先,我们来讲解一下“Vue组件简明讲解”的完整攻略。 什么是Vue组件 Vue组件可以理解为是一个自定义的、具有某些特定功能或特征的、可复用的Vue实例。 组件化开发是现代Web开发中的重要技术之一,Vue框架作为目前比较流行的前端框架之一,有着非常完善的组件化开发机制,可以大大提高代码复用性和开发效率。 Vue组件的特点 Vue组件有以下几个主要特点: …

    Vue 2023年5月28日
    00
  • 详解auto-vue-file:一个自动创建vue组件的包

    下面是详细讲解 “详解auto-vue-file:一个自动创建vue组件的包” 的完整攻略: 什么是auto-vue-file auto-vue-file是一个自动创建Vue组件文件的Node.js包。使用auto-vue-file,你可以快速地创建Vue组件文件,省去手动创建文件的繁琐步骤。 安装auto-vue-file 要安装auto-vue-file…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部