富文本编辑器 VUE-QUILL-EDITOR 使用教程

2023-11-09

一.基础用法

1、NPM 导入 VUE-QUILL-EDITOR

npm install vue-quill-editor --save

2、引入 VUE-QUILL-EDITOR

在全局中引入

import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor'
 
// 引入样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
 
Vue.use(VueQuillEditor, /* { 默认全局 } */)

在指定的 vue 文件中引入

// 引入样式
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'
 
import { quillEditor } from 'vue-quill-editor'
 
export default {
  components: {
    quillEditor
  }
}

3、在 VUE 中使用

<template>
    <quill-editor 
        v-model="content" 
        ref="myQuillEditor" 
        :options="editorOption" 
        @blur="onEditorBlur($event)" 
        @focus="onEditorFocus($event)"
        @change="onEditorChange($event)">
    </quill-editor>
</template>
 
<script>
    export default {
        data() {
            return {
                content: `<p>这是 vue-quill-editor 的内容!</p>`, //双向数据绑定数据
                editorOption: {}, //编辑器配置项
            }
        },
        methods: {
            onEditorBlur() {}, // 失去焦点触发事件
            onEditorFocus() {}, // 获得焦点触发事件
            onEditorChange() {}, // 内容改变触发事件
        }
    }
</script>

到这里一个默认的富文本编辑器已经导入使用了,如下图所视!

二.升级用法

一般的,我们在使用的时候并不需要这么多功能,可以适当的对编辑器配置项进行配置。

 editorOption: {
       modules:{
         toolbar: [
             ['bold', 'italic', 'underline', 'strike'], //加粗,斜体,下划线,删除线
             ['blockquote', 'code-block'], //引用,代码块
             [{'header': 1}, {'header': 2}], // 标题,键值对的形式;1、2表示字体大小
             [{'list': 'ordered'}, {'list': 'bullet'}], //列表
             [{'script': 'sub'}, {'script': 'super'}], // 上下标
             [{'indent': '-1'}, {'indent': '+1'}], // 缩进
             [{'direction': 'rtl'}], // 文本方向
             [{'size': ['small', false, 'large', 'huge']}], // 字体大小
             [{'header': [1, 2, 3, 4, 5, 6, false]}], //几级标题
             [{'color': []}, {'background': []}], // 字体颜色,字体背景颜色
             [{'font': []}], //字体
             [{'align': []}], //对齐方式
             ['clean'], //清除字体样式
             ['image', 'video'] //上传图片、上传视频
            ]
         },
         placeholder: "输入内容..."
     }, //编辑器配置项

可以根据自己的实际需求,保留相应的工具栏。

三.图片上传

vue-quill-editor 默认的是以 base64 保存图片,会直接把图片 base64 和内容文本一起以字符串的形式提交到后端。这样小图片还行,如果要上传大图片会提示上传失败,优秀的前端打字员显然不会这样做。

思路

  • 可以先将图片上传至服务器,再将图片链接插入到富文本中显示
  • 图片上传可以自定义一个组件或者使用 iview 的上传图片的组件(我在项目中使用的是自定义的组件,这里演示使用 iview 组件上传)
  • 上传图片的组件需要隐藏,点击图片上传时调用 iview 的图片上传,上传成功后返回图片链接。
  1. 在编辑器项中配置配置项

    editorOption: {
                modules: {
                    toolbar: {
                        container: toolbarOptions, // 工具栏
                        handlers: {
                            'image': function(value) {
                                if (value) {
                                    alert('点击了上传图片')
                                } else {
                                    this.quill.format('image', false);
                                }
                            }
                        }
                    }
                    placeholder: "输入内容..."
                }, //编辑器配置项
            },
  2. 调用 iview 的上传组件。

    HTML:

    <Upload
        :show-upload-list="false"
        :on-success="handleSuccess"
        :format="['jpg','jpeg','png','gif']"
        :max-size="2048"
        multiple
        action="/file/upload"
        >
    </Upload>
    <quill-editor
        v-model="content"
        :options="editorOption"
        ref="quillEditor">
    </quill-editor>

    CSS:

    .ivu-upload {
        display: none;
    }

    JS:

    data () {
        return {
            content: '',
            editorOption: {                
                modules: {
                    toolbar: {
                        container: toolbarOptions,  // 工具栏
                        handlers: {
                            'image': function (value) {
                                if (value) {
                                    // 调用iview图片上传
                                    document.querySelector('.ivu-upload .ivu-btn').click()
                                } else {
                                    this.quill.format('image', false);
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    methods: {
        handleSuccess (res) {
            // 获取富文本组件实例
            let quill = this.$refs.myQuillEditor.quill
            // 如果上传成功返回图片URL
            if (res) {
                // 获取光标所在位置
                let length = quill.getSelection().index;
                // 插入图片,res为服务器返回的图片链接地址
                quill.insertEmbed(length, 'image', res)
                // 调整光标到最后
                quill.setSelection(length + 1)
            } else {
                // 提示信息,需引入Message
                Message.error('图片插入失败')
            }
        },
    } 

    这样就完成了图片上传的功能。

四.调整图片大小

1.在原本的quill-editor能正常使用的情况下,安装quill-image-drop-module和quill-image-resize-module

npm install quill-image-drop-module -S
npm install quill-image-resize-module -S

2.我是在全局注册的quill-editor,在main.js中加入以下代码

//富文本编辑器
import VueQuillEditor, { Quill } from 'vue-quill-editor';
import 'quill/dist/quill.core.css';
import 'quill/dist/quill.snow.css';
import 'quill/dist/quill.bubble.css';
import imageResize  from 'quill-image-resize-module' // 调整大小组件。
import { ImageDrop } from 'quill-image-drop-module'; // 拖动加载图片组件。
Quill.register('modules/imageResize', imageResize );
Quill.register('modules/imageDrop', ImageDrop);
Vue.use(VueQuillEditor);

3.在 editorOption 中添加配置  在modules中与 history/toolbar平级

imageDrop: true, //图片拖拽
imageResize: { //放大缩小
   displayStyles: {
      backgroundColor: "black",
      border: "none",
      color: "white"
   },
   modules: ["Resize", "DisplaySize", "Toolbar"]
},

4.在项目文件 vue.config.js 加上配置。(这一步很重要,如果不配置会报错!)

const webpack = require('webpack'); //导入 webpack 模块
 
//在模块中加入
configureWebpack: {
        plugins: [
            new webpack.ProvidePlugin({
                'window.Quill': 'quill/dist/quill.js',
                'Quill': 'quill/dist/quill.js'
            })
       ],
   },

这样就导入完成了,如下图所示

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

富文本编辑器 VUE-QUILL-EDITOR 使用教程 的相关文章

  • 验证以防止角度形式出现重复的形式值

    我有几个表单数组 我需要进行验证 以便每个表单行中的特定字段在所有表单数组中必须是唯一的 如果任何值出现多次 则两个表单字段都必须标记为红色 我设法编写了一个函数 以便如果这些字段有任何更改 该函数将返回 true false 但我不确定如
  • 与拉斐尔的路径位置

    我如何使用 raphael js 更改路径位置 很奇怪的是 明显的方法不起作用 var p paper path some path string p attr fill red p attr x 200 y 100 not working
  • Angular JS未知提供者错误

    删除 Bower components 并清理缓存后 我使用 Bower install 重新安装了依赖项 该应用程序无法加载并出现以下错误 未捕获的错误 injector unpr 未知提供程序 forceReflowProvider 这
  • 使用express记录所有GraphQL响应

    我成功地设置了记录 graphQL 错误 app use graphql graphqlHTTP request gt return schema rootValue request formatError error gt const p
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • Nightmare.js 截图缓冲区长度 0

    我正在运行一个 night js 脚本 我试图在其中截取页面上多个元素的屏幕截图 The first元素被捕获得很好 但折叠下方的所有其他元素都以零长度捕获 我正在努力调试这个问题 任何帮助将非常感激 基本上这个脚本会遍历一个页面并选择al
  • innerText 和 html 之间的区别

    有什么区别innerText text and html innerText or text http docs jquery com Attributes text如果您使用的是 jQuery 不包含任何 HTML 标签 因此 如果您有一
  • 对 UPDATE 行的 POST 请求

    我是 javascript 的新手 所以我正在寻找一些帮助来创建一种拖放地理编码标记的方法 以允许交互式更改地址 我相信通过更新 LOCATION 列行可以实现这一点 第一步是 发送 POST 请求 对吧 好吧 所以我想问是否有人可以给我看
  • 为什么使用 MarkForCheck() 和 setTimeout?

    我对 ChangeDetectorRef 中的 MarkForCheck 方法有疑问 对于一种用法我必须使用this cd markForCheck 因为在控制台中我获取了值 但它没有在视图上更新 setTimeout gt this ch
  • 如何使用 jQuery 显示“忙”指示器?

    如何在网页中的特定点显示旋转的 忙 指示器 我想在 Ajax 请求开始 完成时启动 停止指示器 这真的只是显示 隐藏 gif 动画的问题 还是有更优雅的解决方案 您可以只显示 隐藏 gif 但您也可以将其嵌入到 ajaxSetup 中 以便
  • 以编程方式将子节点添加到 jstree

    我正在尝试编写一些动态添加节点到 jstree 的代码 我已经关注了医生http www jstree com documentation crrm http www jstree com documentation crrm但无法获得一个
  • 当我尝试使用 jasmine 进行测试时,应用程序文件夹未在 Ext.appliation 中加载

    我正在尝试在我的应用程序 Ext js 5 中实现茉莉花以进行单元测试 为此 我创建了应用程序测试文件 Ext require Ext app Application Ext Loader setConfig enabled true Ex
  • Cytoscape 布局 - 处理锁定节点

    我正在使用 vue cytoscape 渲染图形并浏览树状数据结构 我的目标是扩展父节点并保持它们在图中的位置 我想简单地添加新的子节点 我的方法是锁定当前节点 添加子节点并解锁节点 this cy nodes lock for let d
  • 使用添加“title”属性换行符 到 JSX 元素

    我知道我可以在 HTML 中添加换行符title属性使用 10 但 React 避免了这一点 例如 这是一个 React 组件 其中包含一个标准的 未由 React 处理的组件title包含换行符的属性 并且可以在浏览器中看到效果 但是如果
  • onDeviceReady 未在 PhoneGap hello world 应用程序中触发

    我正在尝试做一个简单的警报 测试 应用程序 但事件没有被触发 这是代码 function onLoad document addEventListener deviceready onDeviceReady false Cordova is
  • 如何在vuetify中设置固定工具栏?

    在 vuetify 中我使用工具栏
  • 如何使用 Firebase Cloud Functions 在 DataSnapshot 中查找特定值

    我正在尝试创建一个云函数 该函数将在 HTTP 请求 在计时器上发送 上触发 这将删除具有特定值的所有子项 数据库节点如下所示 activities 4GI1QXUJG0MeQ8Bq19WOdCQFo9r1 uid activity ham
  • 电子节点集成不起作用,也普遍奇怪的电子行为[重复]

    这个问题在这里已经有答案了 我是 Electron 的新手 我一直在努力让它工作 我遇到了无法解释的行为 所以这里有一个总结 我无法让 Electron 和 html 之间的通信正常工作 即使我有nodeIntegration true 网
  • IE8 - 隐藏 div 内的表单,返回键不再起作用

    我有一个登录表单 位于带有 display none 的 div 中 然后我使用 jquery 淡入表单 但 Enter Return 键不再提交表单 如果我将显示更改为阻止 则效果很好 此问题仅存在于 IE 中 有任何想法吗 这是一个不起
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到

随机推荐

  • java:变量(二)变量的基本类型

    二 整型与浮点型细节 1 组成 整型变量是由符号位和数位两部分组成 浮点变量是由符号位 指数尾 尾数位组成 整型和浮点型变量的首位都是符号位 用来表示数据的正负 2 整型浮点型变量的长度和取值范围是固定的 事实上同一语言的基本数据类型的长度
  • 云优化:您需要知道的一切

    在不考虑云优化的情况下将开发工作迁移到云端有点类似于吃 PB J 花生酱 果酱 三明治 只不过没有果酱 虽然花生酱已经够美味了 但您错过了把这一切结合在一起的要素 如果您想确保最大限度地利用您的云支出并消除任何可能拖慢速度的低效率事项 那么
  • 在idea中集成redis

    https www cnblogs com yiMro p 13529150 html SpringBoot Redis 基本配置及使用 Test public void TestRedis Jedis jedis new Jedis 19
  • [docker学习笔记] 11.docker网络模式及容器间网络通信

    docker的容器之间需要进行业务通信 11 1 默认网络 初始安装docker 之后 有三种网络 可以通过 docker network ls 查看 root localhost docker network ls NETWORK ID
  • 常用校验码(奇偶校验码、海明校验码、CRC校验码)

    常用校验码 奇偶校验码 海明校验码 CRC校验码 一 奇偶校验码二 海明校验码三 CRC校验码 计算机系统运行时 各个部之间要进行数据交换 交换的过程中 会有发生误码的可能 即0变成1或1变成0 由于计算机的储存是通过二进制代码来实现的的
  • C#连接云服务器MySql数据库

    环境 vs2017 第一步 在主窗口代码区新建一个类 用于连接数据库 在开发过程中其他窗口 常常也需要 对数据库进行操作 如果在每一个窗口的代码区域都连接一次数据库的话 就会很麻烦 所以在主窗口先用一个公共类连接了数据库 其他窗口就可以直接
  • go 进阶 请求代理相关: 一. 基于原生HTTP实现请求代理

    目录 一 代理基础概念了解 什么是正向代理 什么是反向代理 二 基于原生HTTP实现代理 简单正向代理示例 简单反向代理示例 上方代理中可能存在的问题 一 代理基础概念了解 什么是正向代理 是一种客户端的代理技术缩写为 forward pr
  • HarmonyOS云开发基础认证

    单选 答案 Cloud DB的数据同步模式包括缓存模式和本地模式 应用可以仅使用缓存模式 或者本地模式 也可以同时使用缓存模式和本地模式 正确 True Cloud DB服务在通过OnSnapshotListener类中的onSnapsho
  • MISRA-2012 规则整理

    说明 为了方便标准的对照 标题从8 1开始 目录 8 1 一个标准C环境 8 2 不使用的代码 8 3 注释 8 4 字符集 8 5 标识符 8 6 类型 8 7 常量 8 8 声明与定义 8 9 初始化 8 10 基本数据类型 8 11
  • 华为OD机试真题 整数对最小和 JavaScript java python c++ 参考解题

    题目描述 给定两个整数数组 array1 array2 数组元素按升序排列 假设从array1 array2中分别取出一个元素可构成一对元素 现在需要取出K个元素 并对取出的所有元素求和 计算和的最小值 注意 两对元素如果对应于array1
  • 在navicat中做数据库建模

    前几天 项目经理和我说要我把最近这个项目的数据表做一个关联图 我一想 这不就是数据库建模了嘛 可是公司电脑里没有power designer啊 公司电脑里还不能装外部来源的软件 这咋办 难不成要手工画图 想想就头疼 无意中就发现了navic
  • LVGL V8之flex grow

    flex grow布局 static void lv example flex 3 void lv obj t cont lv obj create lv scr act 当前活动界面创建obj对象作为容器 lv obj set size
  • 《STL源码剖析》深入剖析理解

    目录 提示 这里可以添加系列文章的所有文章的目录 目录需要自己手动添加 前言 标准程序库和STL概论 空间配置器解析 提示 写完文章后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 目录 前言 标准程序库和STL概论 空间配置器
  • OpenWrt 修改源码的密码配置(七)

    通过修改源码方式 修改账号及密码 修改密码 package base files files etc shadow root 0 0 99999 7 daemon 0 0 99999 7 ftp 1 BKbzZZm0 nrDMDt2K5Yu
  • qt修改构建套件

    1 qtcreator 工具 选项 qtVersion 添加 选择要添加的qmake 2 点击构建套件 选择对应的编译器 3 选择对应的调试器 解决can not find qmake conf问题
  • Synchronized(对象锁)和Static Synchronized(类锁)的区别

    Synchronized和Static Synchronized区别 通过分析这两个用法的分析 我们可以理解java中锁的概念 一个是实例锁 锁在某一个实例对象上 如果该类是单例 那么该锁也具有全局锁的概念 一个是全局锁 该锁针对的是类 无
  • 打造万物识别之利器!微信扫一扫植物识别篇技术解析

    导语 冬去春来日渐暖 柳絮萌芽草生根 立春已过 又到了户外踏青赏花的季节 再过段时间 公园 郊外 路边各种鲜花都会渐次开放 大家踏春的时候都会拍一些好看的照片 发一些朋友圈 写一些花语 市场上也出现了不少识花app 用户下载app 拍张照片
  • 单播与多播mac地址

    MAC 地址 Media Access Control Address 是一个用于识别网络设备的唯一标识符 每个网络设备都有一个独特的 MAC 地址 用于在局域网中进行通信 单播MAC地址 单播MAC地址用于单播通信 即一对一的通信模式 当
  • static静态代码块

    static静态代码块 public class Person 静态代码块 在类加载时候执行静态代码块 只会执行一次 static System out println Person static initializer 实例初始化块 每次
  • 富文本编辑器 VUE-QUILL-EDITOR 使用教程

    一 基础用法 1 NPM 导入 VUE QUILL EDITOR npm install vue quill editor save 2 引入 VUE QUILL EDITOR 在全局中引入 import Vue from vue impo