vue3+vite版本
1、下载依赖
富文本:npm install @vueup/vue-quill
图片拖拽插件:npm install quill-image-drop-module
图片缩放大小插件:npm install quill-image-resize-module
PS:额外依赖下载
npm install @rollup/plugin-inject
2、vite.config配置
import inject from '@rollup/plugin-inject';
plugins: [
inject({
'window.Quill': ['@vueup/vue-quill', 'Quill'],
Quill: ['@vueup/vue-quill', 'Quill'],
}),
],
3、组件内引用
import { QuillEditor, Quill } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";
import { ImageDrop } from 'quill-image-drop-module';
// import imageResize from 'quill-image-resize-module';
// 2025年2月21日16:36:15:“quill-image-resize-module”这个模块可能是没有默认导出的模块,需要更换导入方式
import * as imageResize from 'quill-image-resize-module';
Quill.register('modules/ImageDrop', ImageDrop);
Quill.register('modules/imageResize', imageResize);
QuillEditor组件options配置:
const options = ref({
theme: "snow",
bounds: document.body,
debug: "warn",
modules: {
// 工具栏配置
toolbar: [
["bold", "italic", "underline", "strike"], // 加粗 斜体 下划线 删除线
["blockquote", "code-block"], // 引用 代码块
[{ list: "ordered" }, { list: "bullet" }], // 有序、无序列表
[{ indent: "-1" }, { indent: "+1" }], // 缩进
[{ size: ["small", false, "large", "huge"] }], // 字体大小
[{ header: [1, 2, 3, 4, 5, 6, false] }], // 标题
[{ color: [] }, { background: [] }], // 字体颜色、字体背景颜色
[{ align: [] }], // 对齐方式
["clean"], // 清除文本格式
["link", "image", "video"] // 链接、图片、视频
],
// ImageDrop: true, // PS:因为QuillEditor自带可拖拽此配置可以不开,开启拖动会复制图片
// todo 富文本导入图片是否需要缩放拖拽
imageResize: {
displayStyles: {
backgroundColor: 'black',
border: 'none',
color: 'white',
},
modules: ['Resize', 'DisplaySize', 'Toolbar'],
},
},
placeholder: "请输入内容",
readOnly: props.readOnly
});