vue项目:集成富文本编辑器 - 百度ueditor(vue-ueditor-wrap)

简介: vue项目:集成富文本编辑器 - 百度ueditor(vue-ueditor-wrap)

一、背景

集成百度ueditor,实现图文编辑

二、项目介绍

vue---nuxt项目

vue项目:ueditor(vue-ueditor-wrap)

三、集成步骤

3.1、下载富文本编辑器

GitHub - fex-team/ueditor: rich text 富文本编辑器

3.2、下载后放在static目录下

3.3、vue项目 安装插件vue-ueditor-wrap

yarn add vue-ueditor-wrap

3.4、创建配置文件

import cookie from 'js-cookie'
export const a = 1
// 百度富文本配置项
export const ueditorConfig = {
  //是否开启字数统计
  wordCount:true,
  //允许输入的最大字符数
  maximumWords:50000,
  // 编辑器不自动被内容撑高
  autoHeightEnabled: false,
  // 初始容器高度
  initialFrameHeight: 240,
  // 初始容器宽度
  initialFrameWidth: '100%',
  // 上传文件接口
  serverUrl: 'XXXXX/api/v1/files/upload',
  // UEditor 资源文件的存放路径,通常Nuxt项目设置为/UEditor/即可
  // UEDITOR_HOME_URL: `/UEditor/`,
  UEDITOR_HOME_URL: `UEditor/`,
  // 配合最新编译的资源文件,你可以实现添加自定义Request Headers,详情https://github.com/HaoChuan9421/ueditor/commits/dev-1.4.3.3
  headers: {
    Authorization: `Bearer ${cookie.get('token')}`,
    tenantId: cookie.get('tenantId')
  },
  readonly: false,
  focus: true
}

四、使用步骤

4.1、在开发的业务文件引入vue-ueditor-wrap、配置文件

import VueUeditorWrap from 'vue-ueditor-wrap';

import { ueditorConfig } from '../ueditor/index';

4.2、使用

<vue-ueditor-wrap
   ref="ueditor_v"
   v-model="msg"
   class="preview"
   :config="config"
   @ready="ready"
/>

4.3、数据、配置

ready()

// 可以在ready方法中拿到editorInstance实例,所有API和官方的实例是一样了。http://fex.baidu.com/ueditor/#api-common
ready(editorInstance) {
    console.log(`实例${editorInstance.key}已经初始化:`, editorInstance);
},

四、配置插入图片

4.1、ueditor.config.js

imageActionName: 'uploadimage',
imageAllowFiles: [".png", ".jpg", ".jpeg", ".gif", ".bmp"],
imageUrlPrefix: "", /* 图片访问路径前缀 */
imagePathFormat: "/editor/upload/image/{yyyy}{mm}{dd}/{time}{rand:6}", /* 上传保存路径,可以自定义保存路径和文件名格式 */

4.2、上文3.4配置serverurl,文件上传地址

4.3、上传接口返回数据结构应为:

{
    state: 'SUCCESS'
    url: 'https://123.png'
}

五、 至此配置完毕,可以进行编辑、插入图片。

六、设置禁止编辑

6.1、需求

内容区域设置禁止编辑

6.2、实现思路(一)

6.2.1、通过编辑器提供的方法进行配置,没找到方法

6.2.2、通过JS去设置

6.2.2.1、打开元素后发现是一个iframe,那么我们首先获取iframe

document.getElementById('ueditor_0')

6.2.2.2、获取iframe内body

document.getElementById('ueditor_0').contentWindow.document.getElementsByTagName('body')[0]

6.2.2.3、body上属性contentEditable显示为true,,设置为false即可禁止编辑

document.getElementById('ueditor_0').contentWindow.document.getElementsByTagName('body')[0].contentEditable = false

6.2.2.4、在ready方法调用(递归)方法,同时处理ueditor编辑器id后最不为0的情况

// 可以在ready方法中拿到editorInstance实例,所有API和官方的实例是一样了。http://fex.baidu.com/ueditor/#api-common
    ready(editorInstance) {
      console.log(`实例${editorInstance.key}已经初始化:`, editorInstance);
      // 不是编辑状态,禁用编辑,隐藏工具栏
      this.isEditUeditor();
    },
    isEditUeditor() {
      if (!this.edit && document.getElementById(`ueditor_${this.editIndex}`)) {
        document.getElementById('edui1_toolbarbox').style.display = 'none';
        document
          .getElementById('ueditor_0')
          .contentWindow.document.getElementsByTagName(
            'body'
          )[0].contentEditable = false;
      }
      // ueditor_0 通常id后缀为0,处理不为0的情况
      if (
        !this.edit &&
        !document.getElementById(`ueditor_${this.editIndex}`) &&
        this.editIndex < 20
      ) {
        this.editIndex += 1;
        this.isEditUeditor();
      }
    },

6.2.2.5、效果

6.3、实现思路(二)

通过组件的ref属性,逐层找到contentEditable,设置为false

<vue-ueditor-wrap
            ref="ueditor_v"
            v-model="addContentForm.articleContent"
            class="preview"
            :config="config"
            @ready="ready"
          />
ready(editorInstance) {
      console.log(`实例${editorInstance.key}已经初始化:`, editorInstance);
      // 不是编辑状态,禁用编辑,隐藏工具栏
      console.log('377this.$refs.ueditor_v', this.$refs.ueditor_v)
      this.$refs.ueditor_v.editor.body.contentEditable = false
      document.getElementById('edui1_toolbarbox').style.display = 'none';
    },

同样可以实现,效果如图:

七、过程记录

7.1、解决section标签没有style、class的问题,否则加了样式也不能生效

section:['class', 'style'],

经过测试,成功。

八、欢迎关注、点赞、评论、交流指正。

vue+vue-ueditor-wrap+秀米 - 简书

百度富文本框上传图片路径前缀配置问题 - 锋齐叶落 - 博客园

相关文章
|
2月前
|
Java Maven
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
这篇文章是一份关于Maven的安装和配置指南,包括下载、环境变量设置、配置文件修改、IDEA集成Maven以及解决jar包下载问题的方法。
2022最新版超详细的Maven下载配置教程、IDEA中集成maven(包含图解过程)、以及导入项目时jar包下载不成功的问题解决
|
22天前
|
前端开发 JavaScript 开发者
Express.js与前端框架的集成:React、Vue和Angular的示例与技巧
本文介绍了如何将简洁灵活的Node.js后端框架Express.js与三大流行前端框架——React、Vue及Angular进行集成,以提升开发效率与代码可维护性。文中提供了详细的示例代码和实用技巧,展示了如何利用Express.js处理路由和静态文件服务,同时在React、Vue和Angular中构建用户界面,帮助开发者快速掌握前后端分离的开发方法,实现高效、灵活的Web应用构建。
36 3
|
27天前
|
存储 NoSQL 数据处理
组合和继承怎么集成一个性能较好的项目
组合与继承是面向对象编程的核心概念,前者通过对象间关联实现高效解耦,后者则重用代码以节省空间和内存。组合常用于现代项目,利用代理与依赖注入简化代码管理;而继承简化了子模块对父模块资源的应用,但修改会影响整体。随着分层解耦及微服务架构如SpringCloud的出现,这些技术进一步优化了数据处理效率和服务响应性能,尤其在分布式存储与高并发场景下。同步异步调用、Redis分布式应用等也广泛运用组合与继承,实现代码和内存空间的有效复用。
|
2月前
|
JavaScript
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
这篇文章介绍了如何在Vue 2.X项目中封装和使用WangEditor 5富文本编辑器,支持图片的点击、粘贴和拖拽上传,同时提到封装的组件也适用于Vue 3.X项目,并提供了详细的使用示例和后端配置。
84 1
基于Vue2.X对WangEditor 5富文本编辑器进行封装与使用,支持单个或多个图片点击、粘贴、拖拽上传,Vue3.X项目也可直接使用
|
2月前
|
jenkins 测试技术 持续交付
解锁.NET项目高效秘籍:从理论迷雾到实践巅峰,持续集成与自动化测试如何悄然改变游戏规则?
【8月更文挑战第28天】在软件开发领域,持续集成(CI)与自动化测试已成为提升效率和质量的关键工具。尤其在.NET项目中,二者的结合能显著提高开发速度并保证软件稳定性。本文将从理论到实践,详细介绍CI与自动化测试的重要性,并以ASP.NET Core Web API项目为例,演示如何使用Jenkins和NUnit实现自动化构建与测试。每次代码提交后,Jenkins自动触发构建流程,通过编译和运行NUnit测试确保代码质量。这种方式不仅节省了时间,还能快速发现并解决问题,推动.NET项目开发迈向更高水平。
40 8
|
2月前
|
存储 JavaScript 前端开发
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
文章展示了在Vue项目中通过集成Quill富文本编辑器实现公告功能的完整开发过程,包括前端的公告发布、修改、删除操作以及后端的数据存储和处理逻辑。
Vue中通过集成Quill富文本编辑器实现公告的发布。Vue项目中vue-quill-editor的安装与使用【实战开发应用】
|
2月前
|
JavaScript
在Vue项目中vue-quill-editor的安装与使用【详细图解+过程+包含图片的缩放拖拽】
文章详细介绍了在Vue项目中安装和使用`vue-quill-editor`的步骤,包括如何通过npm安装、局部挂载、在Vue页面中引入和配置使用。同时,还提供了如何实现图片的缩放和拖拽功能的进阶教程,涉及到安装额外的插件`quill-image-drop-module`和`quill-image-resize-module`,以及对Webpack配置的调整。最后,文章还提供了实际效果展示和一些后续可能的拓展功能,如上传视频和将图片上传到服务器等。
在Vue项目中vue-quill-editor的安装与使用【详细图解+过程+包含图片的缩放拖拽】
|
2月前
Vue3项目引入 vue-quill 编辑器组件并封装使用
本文介绍了如何在Vue3项目中引入并封装使用`vue-quill`富文本编辑器组件,包括安装配置、父页面实现、子组件设计以及使用方法和效果展示。
535 0
Vue3项目引入 vue-quill 编辑器组件并封装使用
|
2月前
|
机器学习/深度学习 设计模式 人工智能
面向对象方法在AIGC和大数据集成项目中的应用
【8月更文第12天】随着人工智能生成内容(AIGC)和大数据技术的快速发展,企业面临着前所未有的挑战和机遇。AIGC技术能够自动产生高质量的内容,而大数据技术则能提供海量数据的支持,两者的结合为企业提供了强大的竞争优势。然而,要充分利用这些技术,就需要构建一个既能处理大规模数据又能高效集成机器学习模型的集成框架。面向对象编程(OOP)以其封装性、继承性和多态性等特点,在构建这样的复杂系统中扮演着至关重要的角色。
53 3
|
2月前
|
Java Spring UED
Spring框架的异常处理秘籍:打造不败之身的应用!
【8月更文挑战第31天】在软件开发中,异常处理对应用的稳定性和健壮性至关重要。Spring框架提供了一套完善的异常处理机制,包括使用`@ExceptionHandler`注解和配置`@ControllerAdvice`。本文将详细介绍这两种方式,并通过示例代码展示其具体应用。`@ExceptionHandler`可用于控制器类中的方法,处理特定异常;而`@ControllerAdvice`则允许定义全局异常处理器,捕获多个控制器中的异常。
38 0
下一篇
无影云桌面