富文本编辑器vue2-editor

摘要:
富文本编辑器vue2-editor在后台管理系统开发的过程中,富文本编辑器是经常会用到的一种文本编辑工具。目前主流的富文本编辑器有很多,但总有一款是符合自己需求的。此次我使用的富文本编辑器是vue2-editor,并结合实际情况进行了相应调整。vue2-editor富文本编辑器是基于vue-quill-editor富文本编辑器进行改造的,如果有问题可以访问文档进行问题的查找。插件安装vue2-editor:富文本编辑器yarnaddvue2-editorquill-image-drop-module:图片拖拽quill-image-resize-module:图片大小调整yarnaddquill-image-drop-module--devyarnaddquill-image-resize-module--dev封装Editor组件//引入vue2wditorimport{VueEditor}from"vue2-editor";//导入图片操作相关插件import{ImageDrop}from"quill-image-drop-module";importImageResizefrom"quill-image-resize-module";exportdefault{name:"Vue2Editor",components:{VueEditor},props:{defaultText:{type:String,default:""},richText:{type:String,default:""}},watch:{//监听默认值回调defaultText{if(nv!
富文本编辑器vue2-editor

在后台管理系统开发的过程中,富文本编辑器是经常会用到的一种文本编辑工具。目前主流的富文本编辑器有很多,但总有一款是符合自己需求的。在周末花费了大约半天的时间,尝试了许多富文本编辑器,大体上功能都相差无几。主要是对富文本中图片的处理,各个种类的富文本对图片的处理差异还是挺大的。此处的所说的图片处理指的是图片的大小调整、位置调整、是否可以拖拽等。此次我使用的富文本编辑器是vue2-editor , 并结合实际情况进行了相应调整。
vue2-editor 富文本编辑器是基于 vue-quill-editor 富文本编辑器进行改造的,如果有问题可以访问文档进行问题的查找。

插件安装

  • vue2-editor:富文本编辑器
yarn add vue2-editor
  • quill-image-drop-module:图片拖拽
  • quill-image-resize-module:图片大小调整
yarn add quill-image-drop-module --dev
yarn add quill-image-resize-module --dev

封装Editor组件

<template>
	<div class="editor">
		<vue-editor
			:customModules="customModulesForEditor"
			:editorOptions="editorSettings"
			:editorToolbar="customToolbar"
			useCustomImageHandler
			@image-added="handleImageAdded"
			@blur="onEditorBlur"
			v-model="editorHtml"
		/>
	</div>
</template>

<script>
// 引入vue2wditor
import { VueEditor } from "vue2-editor";
// 导入图片操作相关插件
import { ImageDrop } from "quill-image-drop-module";
import ImageResize from "quill-image-resize-module";

export default {
	name: "Vue2Editor",
	components: { VueEditor },
	props: {
		defaultText: { type: String, default: "" },
		richText: { type: String, default: "" }
	},
	watch: {
		// 监听默认值回调
		defaultText(nv, ov) {
			if (nv != "") {
				this.editorHtml = nv;
				this.$emit("update:rich-text", nv);
			}
		}
	},
	data() {
		return {
			editorHtml: "",
			// 菜单栏
			customToolbar: [
				[{ header: [false, 1, 2, 3, 4, 5, 6] }],
				["bold", "underline"],
				[{ align: "" }, { align: "center" }, { align: "right" }, { align: "justify" }],
				[{ list: "ordered" }, { list: "bullet" }, { list: "check" }],
				[{ indent: "-1" }, { indent: "+1" }],
				["color", "background"],
				["link", "image", "video"]
			],
			// 调整图片大小和位置
			customModulesForEditor: [
				{ alias: "imageDrop", module: ImageDrop },
				{ alias: "imageResize", module: ImageResize }
			],
			// 设置编辑器图片可拖拽
			editorSettings: {
				modules: { imageDrop: true, imageResize: {} }
			}
		};
	},
	mounted() {},
	methods: {
		// 自定义图片上传
		handleImageAdded(file, Editor, cursorLocation, resetUploader) {
			// 文件上传:$oss图片文件上传插件是自己封装的阿里云oss文件直传,此处代码自定义
			this.$oss(file, file.name).then(url => {
				if (!!url) {
					Editor.insertEmbed(cursorLocation, "image", url);
					resetUploader();
				}
			});
		},
		// 失去焦点
		onEditorBlur(quill) {
			this.$emit("update:rich-text", this.editorHtml);
		}
	}
};
</script>

<style scoped>
/* 处理添加视频链接标签位置 */
.editor >>> .ql-snow .ql-tooltip {
	top: 0 !important;
	left: 40% !important;
}
</style>

使用Editor组件

<template>
	<div class="home">
		<el-card shadow="never">
			<div slot="header" class="clearfix">
				<h1>Editor 编辑器</h1>
			</div>
			<!-- 编辑器 -->
			<Editor :defaultText="defaultText" :richText.sync="richText" />
		</el-card>
	</div>
</template>

<script>
// 导入插件
import Editor from "../components/Editor";

export default {
	name: "Home",
	components: { Editor },
	data() {
		return {
			defaultText: "",
			richText: ""
		};
	}
};
</script>

参考图:
editor.png
注意事项:
当引入调整的图片的两个插件时,vue控制台会报无法找到Quill.jsvue2editor官方给的解决办法是基于webpack4.x的,如果报错,说明当前项目使用的webpack版本较高,现在的解决办法就是针对高版本webpack的即vue-cli版本>4.x。
解决办法:
修改vue.config.js文件,在文件顶部导出webpack模块,然后根据修改要求对webpack进行相应的调整和设置。代码如下:

// webpack
const webpack = require("webpack");
// gzip

module.exports = {
	chainWebpack: config => {
		// 压缩代码
		config.optimization.minimize(true);
		// 分割代码
		config.optimization.splitChunks({ chunks: "all" });
		// 用cdn方式引入
		config.externals({
			//vue: "Vue"
		});
		// Quill.js文件引入失败配置
		config.plugin("provide").use(webpack.ProvidePlugin, [
			{
				"window.Quill": "quill/dist/quill.js",
				Quill: "quill/dist/quill.js"
			}
		]);
	}
};

(* ̄(oo) ̄):因为业务需要,移动端图片要100%占满全屏,所以当前使用的基于quill 的图片拖拽无法达到宽度100%的效果,拖拽后的图片大小是指定的像素宽度,若对图片宽度有特定要求,此富文本的图片上传可能适合你,若动手能力强,可自行改造。

免责声明:文章转载自《富文本编辑器vue2-editor》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇乌班图 之 apt命令 及 VMware共享文件夹Java基础-基本数据类型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue 折叠面板Collapse在标题上添加组件后,阻止面板冒泡的用法

iView组件中,折叠面板Collapse点击面板标题部分,会出现面板收起或展开的效果。那么在面板标题后面再添加下拉框之类的组件时,会出现跟面板点击一样的效果,这时候就需要阻止冒泡的用法了。具体代码: <!--折叠面板组件on-change事件即可获得当前展开面板的值,value即为默认面板的值,可绑定变量值,accordion选项即一次只能展开一个...

Vue项目上线后刷新报错404问题(apache,nginx,tomcat)

一、 Vue项目打包发布apache报错: route,配置一个覆盖所有的路由情况 1、需要修改router/index.js中new Router 配置,加一个base: '/htcm_front/', 它指定应用的基路径,该应用是服务于localhost/htcm_front路径下,所以必须加base配置,否则应用会展示404页面 2、需要修改conf...

【转】 一个后端开发的 Vue 笔记【入门级】

【转】 一个后端开发的 Vue 笔记【入门级】 一 前言 最近找了些教程,顺带着趴在官网上,看了看 Vue 的一些内容,入门的一些概念,以及基础语法,还有一些常用的操作,瞄了一眼,通篇文字+贴了部分代码 9000 多字,入门语法什么的还是很好理解的,以前也有一定做小程序的基础,感觉还是很相似的,不过对于一些稍复杂的点,感觉还是总结的不够细致,例如插槽,和...

vue 进入页面与离开页面触发事件

1.切换进入当前路由之前的钩子函数 beforeRouteEnter <script> export default { beforeRouteEnter(to, form, next) { next() } } </script> 2.离开当前路由之前的钩子函数 beforeRouteLeave <scri...

Vue中引入TradingView制作K线图

**前言: 本文使用的是1.10版本 , 可通过TradingView.version()查看当前版本. 附上开发文档地址:https://zlq4863947.gitbooks.i...** 一、修改datafeed.js为export导出,并在vue文件引入TradingView内部代码charting_library.min.js和datafeed....

改造前后端分离的jeecg项目部署到k8s中

官网地址:http://www.jeecg.com/开发文档地址:http://doc.jeecg.com/2043873GitHub地址:https://github.com/zhangdaiscott/jeecg-boot 大致步骤如下:1.创建MySQL,redis等辅助组件2.创建jeecg-boot后端应用3.创建jeecg-vue前端应用 0....