誉天在线项目-放大招-Vue3集成RichText富文本客户端组件QuillEditor

背景

开发中我们需要填写图文内容,就是含有图片和文字,html标准组件中是没有的。都是第三方来实现,就需要我们去集成。
有早期的fckEditor、ckEditor等,新的我们使用了vue框架,市场又推出了quillEditor。下面我们就在vite+vue项目中集成了这个组件。

效果图

在这里插入图片描述

1、安装组件

安装Quill

cnpm install @vueup/vue-quill@latest --save

安装拖放组件

cnpm install quill-image-drop-module --save

安装图片缩放组件

cnpm install quill-blot-formatter --save

2、创建子组件

封装子组件:src/components/QuillEditor/index.vue

<template><QuillEditorref="myQuillEditor"class="quill-editor":style="{ height: height + 'px' }"contentType="html"v-model:content="innerContent":modules="modules":options="options"@update:content="handleUpdate"></QuillEditor>
</template><script setup>
/*** 官方文档: https://vueup.github.io/vue-quill/*/
import { Quill, QuillEditor } from '@vueup/vue-quill';
import '@vueup/vue-quill/dist/vue-quill.snow.css'; //snow主题使用次样式
// import '@vueup/vue-quill/dist/vue-quill.bubble.css'; //bubble主题使用次样式
// import ImageUploader from 'quill-image-uploader';import { computed, getCurrentInstance, reactive } from 'vue';
// import { customerUpload, DownloadBaseUrl } from '@/utils';// Quill.register('modules/imageUploader', ImageUploader);//引入并注册图片改变尺寸插件
// cnpm install quill-image-drop-module --save
import { ImageDrop } from "quill-image-drop-module";
Quill.register('modules/imageDrop', ImageDrop)// cnpm install quill-blot-formatter --save
import BlotFormatter from "quill-blot-formatter"
Quill.register("modules/blotFormatter", BlotFormatter)const modules = {module: BlotFormatter,
}const props = defineProps({height: {type: Number,default: 500},content: {type: String,default: ''},toolbar: {type: Array,default() {return [['bold', 'italic', 'underline', 'strike'], // toggled buttons['blockquote', 'code-block'],[{ header: 1 }, { header: 2 }], // custom button values[{ list: 'ordered' }, { list: 'bullet' }],[{ script: 'sub' }, { script: 'super' }], // superscript/subscript[{ indent: '-1' }, { indent: '+1' }], // outdent/indent[{ direction: 'rtl' }],[{ size: ['small', false, 'large', 'huge'] }], // text direction // custom dropdown[{ header: [1, 2, 3, 4, 5, 6, false] }],[{ color: [] }, { background: [] }], // dropdown with defaults from theme[{ font: [] }],[{ align: [] }],['link', 'video', 'image'],['clean'] // remove formatting button];}}
});
const emit = defineEmits(['update:content']);
const innerContent = computed({get() {return props.content;},set(value) {emit('update:content', value);}
});const { proxy } = getCurrentInstance();
const options = reactive({modules: {imageResize: {displayStyles: {backgroundColor: "black",border: "none",color: "white"},modules: ["Resize", "DisplaySize", "Toolbar"]},toolbar: props.toolbar,imageUploader: {upload: (file) => {return new Promise((resolve, reject) => {customerUpload(file).then((res) => {console.log('res:', res);resolve(`${DownloadBaseUrl}pk=${res.data[0].pk}`);}).catch((err) => {proxy.$message.error(err);reject(err);});});}}},placeholder: '请输入内容',readOnly: false,theme: 'snow'
});
const handleUpdate = (content) => {console.log(content, innerContent.value);
};
</script><style></style>

3、页面调用

<template><QuillEditor ref="quillRef" v-model:content="content" :content='content' :options='editorOption'/>{{content}}
</template><script setup>
import { ref } from 'vue'
import QuillEditor from '../components/QuillEditor/index.vue'let content = ref("<p> 请填写内容...</p>");
let editorOption = {modules: {toolbar: [['bold', 'italic', 'underline', 'strike'], // 加粗 斜体 下划线 删除线[{ list: 'ordered' }, { list: 'bullet' }], // 有序、无序列表[{ script: 'sub' }, { script: 'super' }], // 上标/下标['blockquote', 'code-block'], // 引用  代码块[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色[{ align: [] }], // 对齐方式[{ size: ['small', false, 'large', 'huge'] }], // 字体大小[{ font: [] }], // 字体种类[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题[{ direction: 'rtl' }], // 文本方向[{ indent: '-1' }, { indent: '+1' }], // 缩进['clean'], // 清除文本格式['link', 'image'], // 链接、图片、视频],},
};function editorBlur(val) {console.log('当前的文本框的内容:' + val);
}</script><style></style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新Java JDK 21:全面解析与新特性探讨

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

C++之容器std::stack类empty、size、top、push、emplace、pop、swap应用总结(二百二十三)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

Linux 本地 Docker Registry本地镜像仓库远程连接【内网穿透】

Linux 本地 Docker Registry本地镜像仓库远程连接 文章目录 Linux 本地 Docker Registry本地镜像仓库远程连接1. 部署Docker Registry2. 本地测试推送镜像3. Linux 安装cpolar4. 配置Docker Registry公网访问地址5. 公网远程推送Docker Registry6. 固定Docker Registry公网地址…

基于matlab实现的中点放炮各类地震波时距曲线程序

完整程序&#xff1a; clear all dx50;x-500:dx:500;%炮检距 h100;V11500; theta25*pi/180; V2V1/sin(theta); t1sqrt(x.*x4*h*h)/V1;%反射波时距曲线 t2abs(x)./V1;%直达波时距曲线 %折射波时距曲线 xm2*h*tan(theta);%求盲区 k1; for i1:length(x) if x(i)<-xm …

基于docker进行Grafana + prometheus实现服务监听

基于docker进行Grafana Prometheus实现服务监听 Grafana安装Prometheus安装Jvm监控配置服务器主机监控(基础cpu&#xff0c;内存&#xff0c;磁盘&#xff0c;网络) Grafana安装 docker pull grafana/grafanamkdir /server/grafanachmod 777 /server/grafanadocker run -d -p…

POJ 3977 Subset 折半枚举+二分搜素+双指针

一、题目大意 我们有N&#xff08;N<35&#xff09;个元素&#xff0c;从中选取一个子集&#xff0c;使得它的元素求和的绝对值最小&#xff0c;如果有多个可行解&#xff0c;选择元素最小的。 输出最优子集的元素总和绝对值&#xff0c;和最优子集元素的数量。 二、解题…

JavaWeb 学习笔记 7:Filter

JavaWeb 学习笔记 7&#xff1a;Filter 1.快速开始 使用过滤器的方式与 Servlet 类似&#xff0c;要实现一个Filter接口&#xff1a; WebFilter("/*") public class FirstFilter implements Filter {public void init(FilterConfig filterConfig) throws ServletE…

多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出

多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出 目录 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出预测效果基本介绍程序设计往期精彩参考资料 预测效果 基本介绍 多输入多输出 | MATLAB实现GA-BP遗传算法优化BP神经网络多输入多输出…

《向量数据库指南》——向量搜索库Faiss 迁移到 Milvus 2.x

Faiss -> Milvus 2.x 1. Faiss 数据准备 前提条件是用户已经准备好了自己的 faiss 数据文件。(为了能快速体验,在项目源码的 testfiles 目录下放置了 faiss 测试数据方便用户体验: faiss_ivf_flat.index. 2. 编译打包 这部分同上,不再展开介绍。 3. 配置 migration.ymal…

vue下载Excel文件

前端vue实现导出Excel文件 用到的是 上代码 var wb XLSX.utils.table_to_book(document.querySelector(#my-table));//关联dom节点 这个是表格绑定的id名称var wbout XLSX.write(wb, {bookType: xlsx,bookSST: true,type: array})try {FileSaver.saveAs(new Blob([wbout], {…

【教学类】公开课学号挂牌(15*15CM手工纸)

作品展示&#xff1a; 15*15CM手工纸 文本框12磅加粗。学号数字是段落写入&#xff0c;黑体270磅 背景需求 最近都在小班、中班、大班里做“Python学具测试”&#xff0c;由于都是陌生的孩子&#xff0c;上课时&#xff0c;我通常只能喊“白衣服的女孩”“花格子衣服的男孩”…

精华回顾:Web3 前沿创新者在 DESTINATION MOON 共话未来

9 月 17 日&#xff0c;由 TinTinLand 主办的「DESTINATION MOON: Web3 Dev Summit Shanghai 2023」线下活动在上海黄浦如约而至。 本次 DESTINATION MOON 活动作为 2023 上海区块链国际周的 Side Event&#xff0c;设立了 4 场主题演讲与 3 个圆桌讨论&#xff0c;聚集了诸多…

strtok()函数的使用方法

strtok() 函数用于将字符串分割成子字符串&#xff08;标记&#xff09;。它在 C 语言中非常常用&#xff0c;可以通过指定分隔符来拆分原始字符串&#xff0c;并依次返回每个子字符串。 以下是 strtok() 函数的使用方法&#xff1a; #include <stdio.h> #include <…

Python方法汇总:轻松实现功能!

在爬虫开发中&#xff0c;有时需要模拟登录网站以获取更多的数据或执行特定的操作。本文将为你总结几种常用的Python爬虫模拟登录方法&#xff0c;帮助你轻松实现登录功能&#xff0c;让你的爬虫更加强大有用。 一、基于Requests库的模拟登录 1. 使用Session对象&#xff1a;…

UOS Deepin Ubuntu Linux 开启 ssh 远程登录

UOS Deepin Ubuntu Linux 开启 ssh 远程登录 打开控制台 安装 openssh-server sudo apt -y install openssh-server修改 /etc/ssh/ssh_config 文件 sudo vim /etc/ssh/ssh_config找到 # Port 22 去掉 # 注释后 保存 重启 ssh 服务 sudo systemctl restart ssh设置 ssh 服务 开机…

ros开发中编译cpp文件的2个办法

方式一&#xff1a; 在Ubuntu控制台输入指令 cd catkin_ws 进入到工作空间 然后在输入&#xff1a; catkin_make --pkg catkin_practice 注释&#xff1a;以上catkin_ws是工作空间名称&#xff0c;catkin_practice是工作空间中将要被编译的包的名称 方式二&#xff1a; …

前端控制小数点精度及数字千位分割

前端控制小数点精度及数字千位分割&#xff0c;表头居中&#xff0c;每行单元格内容居右。 前端控制小数点精度&#xff1a; <el-table-column prop"cycz" label"差异产值" header-align"center" align"right"><template s…

JVM高级性能调试

标准的JVM是配置为了高吞吐量&#xff0c;吞吐量是为了科学计算和后台运行使用&#xff0c;而互联网商业应用&#xff0c;更多是为追求更短的响应时间&#xff0c;更低的延迟Latency&#xff08;说白了就是更快速度&#xff09;&#xff0c;当用户打开网页没有快速响应&#xf…

安卓机型-MTK芯片掉串码 掉基带 如何用工具进行修复 改写参数

在早期MTK芯片机型中较多使用AP BP方式来修复mtk芯片机型的串码。目前MTK机型对于丢基带 掉串码问题大都使用MODEM META工具来进行修复串码或者改写参数。今天以一款mtk芯片机型来做个演示&#xff0c; 高通芯片类的可以参考; 高通改串相关 工具仅支持在联发科芯片组上运行的…

WEB使用VUE3实现地图导航跳转

我们在用手机查看网页时可以通过传入经纬度去设置目的地然后跳转到对应的地图导航软件&#xff0c;如果没有下载软件则会跳转到下载界面 注意&#xff1a; 高德地图是一定会跳转到一个新网页然后去询问用户是否需要打开软件百度和腾讯地图是直接调用软件的这个方法有缺陷&…