Vue-Quill-Editor
🍡Quill editor component for Vue, support SPA and SSR.
基于 Quill、适用于 Vue 的富文本编辑器,支持服务端渲染和单页应用。
Example
Projects Using Vue-Quill-Editor
Install
CDN
NPM
npm install vue-quill-editor --save
Mount
mount with global
// require stylesVue
mount with component
// require styles components: quillEditor
mount with ssr
// if used in nuxt.js/ssr, you should keep require it only in browser build environmentif processbrowser const VueQuillEditor = Vue
register quill module
// register quill modules, you need to introduce and register before the vue program is instantiatedQuill
Difference(使用方法的区别)
SSR and the only difference in the use of the SPA:
- SPA worked by the
component
, find quill instance byref attribute
. - SSR worked by the
directive
, find quill instance bydirective arg
. - Other configurations, events are the same.
SSR
<!-- You can custom the "myQuillEditor" name used to find the quill instance in current component --><template><!-- bidirectional data binding(双向数据绑定) --><div class="quill-editor"v-model="content"v-quill:myQuillEditor="editorOption"></div><!-- Or manually control the data synchronization(手动控制数据流) --><div class="quill-editor":content="content"@change="onEditorChange($event)"v-quill:myQuillEditor="editorOption"></div></template><script>export default {data() {return {content: '<p>example content</p>',editorOption: { /* quill options */ }}},mounted() {console.log('this is current quill instance object', this.myQuillEditor)},methods: {onEditorChange(event) {console.log('onEditorChange')}},// Omit the same parts as in the following component sample code// ...}</script>
SPA
<template><!-- bidirectional data binding(双向数据绑定) --><quill-editor v-model="content"ref="myQuillEditor":options="editorOption"@blur="onEditorBlur($event)"@focus="onEditorFocus($event)"@ready="onEditorReady($event)"></quill-editor><!-- Or manually control the data synchronization(或手动控制数据流) --><quill-editor :content="content":options="editorOption"@change="onEditorChange($event)"></quill-editor></template><script>// you can also register quill modules in the componentimport Quill from 'quill'import { someModule } from '../yourModulePath/someQuillModule.js'Quill.register('modules/someModule', someModule)export default {data () {return {content: '<h2>I am Example</h2>',editorOption: {// some quill options}}},// manually control the data synchronization// 如果需要手动控制数据同步,父组件需要显式地处理changed事件methods: {onEditorBlur(quill) {console.log('editor blur!', quill)},onEditorFocus(quill) {console.log('editor focus!', quill)},onEditorReady(quill) {console.log('editor ready!', quill)},onEditorChange({ quill, html, text }) {console.log('editor change!', quill, html, text)this.content = html}},computed: {editor() {return this.$refs.myQuillEditor.quill}},mounted() {console.log('this is current quill instance object', this.editor)}}</script>
Modules
- quill-image-extend-module
- quill-image-resize-module
- quill-image-drop-module
- quilljs-table
- more modules...
Issues
- Add attributes from toolbar options
- Option to insert an image from a URL
- How vue-quill-editor combine with the syntax highlighter module of highlight.js
- 配合 element-ui 实现上传图片/视频到七牛 demo
- How to fix “Can’t find variable: Quill”, “Quill is undefined”, “window.Quill is undefined” errors when trying to use Quill modules that use Webpack in Nuxt/SSR