Vue 轻量级富文本编辑器-Vue-Quill-Editor

开发 开发工具
本篇给大家介绍一款Vue 轻量级富文本编辑器-Vue-Quill-Editor,希望能够对你有所帮助。

1.下载Vue-Quill-Editor

npm install vue-quill-editor --save

2.下载quill(Vue-Quill-Editor需要依赖)

npm install quill --save

3.代码

<template>
<div class="about">
<div class="editor_container">
<quill-editor
v-model="content"
ref="myQuillEditor"
:options="editorOption"
>
</quill-editor>
<input type="text" v-model="texts"/>
<button type="button" @click="onclickForm">提交</button>
</div>
</div>
</template>
<script>
import {quillEditor} from "vue-quill-editor" //调用编辑器
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

export default {
name: 'about',
components: {quillEditor},
data() {
return {
content: '',
texts: '',
// 编辑器配置
editorOption: {
placeholder: '在这里输入内容',
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'], // 上传图片、上传视频
]
}
}
}
},
mounted() {
let content = ''; // 请求返回值
this.str = this.escapeStringHTML(content)
},
methods: {
// 转码
escapeStringHTML(str) {
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
return str
},
onclickForm() {
console.log(this.content)
this.content = ''
}
},
computed: {
editor() {
return this.$refs.myQuillEditor.quill
}
}
}
</script>
<style scoped>
.editor_container /deep/ .ql-editor {
min-height: 300px;
}
</style>

4.自定义 toolbar 菜单

// 编辑器配置
editorOption: {
placeholder: '在这里输入内容',
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'], // 上传图片、上传视频
]
}
}

5.存储及将数据库中的数据反显为HTML字符串

后台接收到数据后会将字符中的标签进行转码,所以我们要先进行一个解码的操作让他变成标签形式的字符串:

例如后台接收的数据如下:""<h1>title</h1>" ,对应解码后就是`<h1>title</h1>`。

// 把实体格式字符串转义成HTML格式的字符串
// 转码
escapeStringHTML(str) {
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
return str
},

然后将返回值赋值给对应的参数:

<div v-html='str' class='ql-editor'>{{str}}</div>

上面的str就是转码函数返回的值,我们要先在data中定义,所以我现在将新增跟展示放在一起,代码如下:

<template>
<div class="about">
<div class="editor_container">
<quill-editor
v-model="content"
ref="myQuillEditor"
:options="editorOption"
>
</quill-editor>
<input type="text" v-model="texts"/>
<button type="button" @click="onclickForm">提交</button>
</div>
</div>
</template>
<script>
import {quillEditor} from "vue-quill-editor" //调用编辑器
import 'quill/dist/quill.core.css'
import 'quill/dist/quill.snow.css'
import 'quill/dist/quill.bubble.css'

export default {
name: 'about',
components: {quillEditor},
data() {
return {
content: '',
texts: '',
// 编辑器配置
editorOption: {
placeholder: '在这里输入内容',
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'], // 上传图片、上传视频
]
}
}
}
},
mounted() {
let content = ''; // 请求返回值
this.str = this.escapeStringHTML(content)
},
methods: {
// 转码
escapeStringHTML(str) {
str = str.replace(/</g, '<');
str = str.replace(/>/g, '>');
return str
},
onclickForm() {
console.log(this.content)
this.content = ''
}
},
computed: {
editor() {
return this.$refs.myQuillEditor.quill
}
}
}
</script>
<style scoped>
.editor_container /deep/ .ql-editor {
min-height: 300px;
}
</style>
责任编辑:姜华 来源: 今日头条
相关推荐

2023-05-11 07:34:36

Yjs协同编辑

2020-04-09 19:07:12

Vuetiptap前端

2023-04-17 11:03:52

富文本编辑器MTE

2013-11-18 10:08:56

工具免费编程工具

2016-09-23 20:30:54

Javascriptuiwebview富文本编辑器

2022-04-22 12:49:50

Lite XL编辑器文本编辑器

2017-07-27 20:21:06

iOSUITableView富文本编辑器

2012-08-10 10:47:45

JavaScript

2022-03-11 08:00:49

编辑器框架Draft.js

2020-12-23 22:25:11

Vi文本编辑器Unix

2010-03-24 09:20:07

CentOS vi编辑

2018-01-05 14:48:03

前端JavaScript富文本编辑器

2021-01-07 11:00:59

Sed文本编辑器Linux

2022-05-13 15:32:11

GNOME文本编辑器

2022-04-13 07:38:50

富文本编辑器设置表格列宽

2019-05-30 08:43:45

JavaScript富文本编辑器编辑器

2020-12-29 06:34:55

KDE Plasma文本编辑器

2011-05-11 10:27:42

文本编辑器

2009-12-09 10:27:03

VS 2005文本编辑

2014-06-05 10:34:54

Notepad++
点赞
收藏

51CTO技术栈公众号