轻量级富文本编辑器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发布项目的完整攻略。 1. 打包项目 在Vue项目开发完成后,需要将项目进行打包。Vue提供了一个命令行工具Vue CLI,可以使用Vue CLI将项目进行打包。 首先需要安装Vue CLI,可以在命令行中输入以下命令进行安装: npm install -g @vue/cli 安装完成后,在命令行中进入到项目根目录,使用以下命令…

    Vue 2023年5月28日
    00
  • springboot vue接口测试前端动态增删表单功能实现

    下面是关于“springboot vue接口测试前端动态增删表单功能实现”的完整攻略: 一、概述 这篇攻略介绍了如何使用Spring Boot和Vue.js构建一个带有动态增删表单功能的前端页面,并且可以通过接口测试实现数据的增删查改等操作。 二、环境搭建 为了正确地使用Spring Boot和Vue.js开发本示例,我们需要安装以下环境: Java Dev…

    Vue 2023年5月28日
    00
  • java中对Redis的缓存进行操作的示例代码

    现在我将为您详细讲解如何在Java代码中对Redis缓存进行操作的完整攻略。 首先,我们需要确保已经在Java项目中引入了Redis的依赖包,例如Jedis或Lettuce等。 连接Redis服务 import redis.clients.jedis.Jedis; public class RedisDemo { public void connectRed…

    Vue 2023年5月28日
    00
  • Vue简易版无限加载组件实现原理与示例代码

    那么现在我将为您详细讲解“Vue简易版无限加载组件实现原理与示例代码”的完整攻略。 1. 组件原理 Vue简易版无限加载组件的实现原理是使用Vue自定义指令和Intersection Observer API。 1.1 自定义指令 使用Vue自定义指令来实现组件的监听滚动事件和判断元素是否达到页面底部的功能。定义指令时,可以使用Vue提供的bind、inse…

    Vue 2023年5月28日
    00
  • Uniapp全局消息提示以及其组件的实现方法

    Uniapp是一个跨端开发框架,使得我们可以非常方便地开发和部署多种移动端应用。在开发移动应用时,全局消息提示是一个必不可少的功能,这可以让用户在操作后接收到系统的反馈以便更好地交互。 Uniapp提供了一个uni.showToast()的API方法,可以让我们在全局范围内显示消息提示。下面是如何使用该API的方法: uni.showToast({ titl…

    Vue 2023年5月28日
    00
  • 项目中一键添加husky实现详解

    下面是项目中一键添加Husky实现的完整攻略示例,分为如下几个步骤: 步骤一:初始化项目 首先,我们需要创建一个新项目并初始化它。我们可以通过以下命令创建并初始化一个名为“my-project”的新项目。 mkdir my-project cd my-project npm init -y 这个命令会创建一个名为“my-project”的文件夹,并初始化一个…

    Vue 2023年5月28日
    00
  • 简单设置el-date-picker的默认当前时间问题

    下面是详细讲解如何设置 el-date-picker 的默认当前时间的攻略: 1.需求分析 当我们使用 el-date-picker 来选择日期时,默认展示的日期为当前日期,这在大部分场景下都是符合要求的。但有时候我们需要默认选中其他日期,比如一个从某一具体日期开始的查询页面。 在这种情况下,我们就需要设置 el-date-picker 的默认当前时间,让它…

    Vue 2023年5月29日
    00
  • vue3+ElementPlus使用lang=”ts”报Unexpected token错误的解决办法

    首先需要明确的是,vue3和ElementPlus均支持使用TypeScript语言进行开发,因此我们可以使用lang=”ts”来指定代码的语言类型。但是,如果在使用过程中出现了Unexpected token错误,需要进行以下的解决办法。 确认项目是否已经安装了必要的依赖 在使用TypeScript时,我们需要安装一些必要的依赖,例如ts-loader、t…

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