这两天由于项目要实现新闻发布的功能,所以上github和gitee找了一些项目,发现都是用富文本插件编译成html来实现功能。经过尝试和寻找,我使用了vue elemnt-tiptap和vue-quill-editor,发现各有优缺点。还有一些坑,记录一下。

vue elemnt-tiptap

好处是鼠标滑过内容时,可以出现气泡方便使用,上传的图片可以设置大小,并且使用惯了element ui的话,感觉界面比较舒服。缺点是在使用首行缩进功能的时候,发现很费劲,怕凭客户的行为很难玩得转所以还是选择了vue-quill-editor,但是不妨碍我喜欢这个。
示例:

一、安装

npm install --save element-tiptap

二、配置
要先引入ElementUI ,在引入element-tiptap,避免报错。
main.js

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import { ElementTiptapPlugin } from 'element-tiptap';
import 'element-tiptap/lib/index.css';
Vue.use(ElementUI);
Vue.use(ElementTiptapPlugin, {lang: "zh", // see i18n
});

因为当时构建项目的vue cli版本应该是2.0,所以编译错误,在build文件夹下的webpack.base.conf.js里把babel-loader这里修改一下就可以了。在2.0以上的vuecli没有发现此问题。

{test: /\.js$/,loader: 'babel-loader',include: [resolve('src'),resolve('test'),resolve('node_modules/webpack-dev-server/client'),resolve('node_modules/tiptap-extensions/dist'),resolve('node_modules/tiptap-utils/dist'),resolve('node_modules/tiptap/dist')]},

三、使用
extensions指的是所需要的工具,不同的工具对应不同的属性,具体的可以到https://www.npmjs.com/package/element-tiptap文档里去看,可以选择中文查看。
其中上传图片的方法也在代码中,uploadRequest 方法是图片工具类提供的方法之一,其作用就是再上传图片的时候,调用这个方法,将返回的ur作用图片的链接。

<template><div><el-tiptapv-model="formInline.contentFileList":extensions="extensions"/></div>
</template><script>
import {fileUpload
} from "../../api/MochaITOM.js";
import {// necessary extensionsDoc,Text,Paragraph,Heading,Bold,Underline,Italic,Strike,ListItem,BulletList,OrderedList,Image,Blockquote,TextAlign,Indent,Table,TableHeader,TableCell,TableRow,TextColor,HorizontalRule
} from 'element-tiptap';export default {data () {return {extensions: [new Doc(),new Text(),new Paragraph(),new Heading({ level: 5 }),new Bold({ bubble: true }), // render command-button in bubble menu.new Underline({ bubble: true, menubar: false }), // render command-button in bubble menu but not in menubar.new Italic(),new Strike(),new ListItem(),new BulletList(),new OrderedList(),new Image({//上传图片的方法uploadRequest (file) {const fd = new FormData()fd.append('file', file)fd.append('info_id',sessionStorage.getItem('uuid'))return fileUpload(fd).then(res=>{return sessionStorage.getItem("api3") + "/fj/"+res.data.path})}}),new Blockquote(),new TextAlign(),new Indent(),new Table(),new TableHeader(),new TableCell(),new TableRow(),new HorizontalRule(),new TextColor()],// 添加信息数据formInline: {contentFileList:""},};},
},
</script>

填写完毕之后,this.formInline.contentFileList就记录了到插件给你提供的html代码
示例:

四、html的回显。
在这个步骤,我去GitHub扒了一下问题,问题解决方法是:
使用v-html 显示你编辑的html代码。然后加上notice-content和el-tiptap-editor__content,就可以显示了。试了一下el-tiptap-editor__content只有这个貌似也可以。

<div class="notice-content  el-tiptap-editor__content " v-html="message.content"></div>

vue-quill-editor

好处是从其他文本复制过来,格式是一样了,没有太大变化,首行缩进功能也比较友好,只是图片的大小没有vue elemnt-tiptap的那么好调,还有就是上传图片比较之下相对麻烦。
一、安装

npm install vue-quill-editor

二、配置
main.js

import Vue from 'vue'
import VueQuillEditor from 'vue-quill-editor'
import 'quill/dist/quill.core.css' // import styles
import 'quill/dist/quill.snow.css' // for snow theme
import 'quill/dist/quill.bubble.css' // for bubble theme
Vue.use(VueQuillEditor, /* { default global options } */)     

三、使用(附带上传图片功能)
html

<quill-editor ref="quill"  class="ql-editor-class" v-model="formInline.contentFileList" :options="editorOption"/>
//input是为了上传图片<input type="file" @change="change" id="upload" style="display:none;" />

js

import {fileUpload
} from "../../api/MochaITOM.js";
export default {data () {return {editorOption: {modules: {toolbar: {container: [['bold', 'italic', 'underline', 'strike'],['blockquote', 'code-block'],[{'header': 1}, {'header': 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'],['link', 'image', 'video']],  // container为工具栏,此次引入了全部工具栏,也可自行配置handlers: {image: function(value) {if (value) {document.querySelector('#upload').click()  // 劫持原来的图片点击按钮事件} else {this.quill.format('image', false)}}}}}},// 添加信息数据formInline: {contentFileList:""},};},methods: {change(e) {let file = e.target.files[0]const formData = new FormData()formData.append('file', file)formData.append('info_id', this.uuid)fileUpload(formData).then(res => {let quill = this.$refs.quill.quillif (res.code === 200) {let length = quill.getSelection().index//光标位置// 插入图片  图片地址quill.insertEmbed(length, 'image', sessionStorage.getItem("api3") + "/fj/" +res.data.path)// 调整光标到最后quill.setSelection(length + 1)//光标后移一位document.querySelector('#upload').value=""}})}}
},

vue使用富文本插件vue elemnt-tiptap和vue-quill-editor相关推荐

  1. 【wangEditor富文本编辑器】富文本三种使用方法,html使用富文本,html套vue脚手架使用富文本,vue使用富文本【简单易用,复制即用】

    前言 富文本编辑器功能是很多人都要使用的 市面上有很多的编辑器可以供选择,但是很多编辑器会有点复杂,或者文档看起来难受. 我最近做了一个需求,是需要在html文件上写富文本编辑器. 但是我看了以前用的 ...

  2. Vue爬坑之旅(二十一):vue使用富文本编辑器vue-quill-editor实现配合后台将图片上传至七牛

    一.全局注册:main.js import Vue from 'vue' import VueQuillEditor, { Quill } from 'vue-quill-editor' import ...

  3. Vue使用富文本框,首选element-tiptap

    element-tiptapGitHub地址:https://github.com/Leecason/element-tiptap/blob/master/README_ZH.md 1.老样子,首先n ...

  4. vue2 使用富文本插件 vue-tinymce(tinymce)

    富文本组件: vue-tinymce 配置教程 1.package.json 添加依赖及对应版本 dependencies 依赖管理下添加 "tinymce": "^5. ...

  5. 微信小程序中使用富文本插件 wxParse

    github下载地址:https://github.com/icindy/wxParse. 下载完成后,复制 wxParse 文件夹到项目目录中(例如: utils 目录下). 在需要使用的 JS 文 ...

  6. vue获取编辑器纯文字_vue中使用富文本编辑器

    前端使用富文本编辑器的插件有很多,今天献上wangeditor的使用教程,教你如何在vue中使用富文本编辑器 wangeditor是一个萌新富文本编辑器,基于js和css,重点在于它轻量,如果你需要的 ...

  7. Django中使用富文本编辑器Uedit

    Uedit是百度一款非常好用的富文本编辑器 一.安装及基本配置 官方GitHub(有详细的安装使用教程):https://github.com/zhangfisher/DjangoUeditor 1. ...

  8. 杨老师教你学会使用富文本编辑器KindEditor之添加页面设计

    2018-12-06 进行整理本篇文章,主要是解决如何引入富文本编辑器的使用 2019-06-18 进行了二次完善,解决了富文本编辑器的图片上传和附件上传问题 本篇文章进行二次更新操作,完善了上传图片 ...

  9. 富文本生成静态html,如何更加安全快速的使用富文本编辑器

    众所周知,富文本编辑器是目前用途广泛的前端插件,它可以直接编辑并保存多样化的文本格式.适用于论坛留言,简单文章发布,自定义静态页面等.本文简单对一种安全使用富文本编辑器的方法进行介绍.文章实例 文章使 ...

最新文章

  1. 用 Flask 来写个轻博客 (30) — 使用 Flask-Admin 增强文章管理功能
  2. 在xml文件的Preference标签中,用extra给intent标签加参数
  3. 有一个会泰勒级数的八岁表妹是怎样一种体验?
  4. mysqld_safe启动mysql
  5. java基础语法实例教程_Java 基础语法
  6. java自定义日志_Java 自定义日志写入
  7. android 如何实现apk search出现在系统的推荐列表里
  8. Linux 下查看系统是32位还是64位的方法
  9. 蒙文字体怎么安装_我们来聊一聊iOS13的“字体”该怎么用?
  10. 如何在 Mac 上设置自定义锁屏信息?
  11. 内蒙古一个不起眼的小城,藏着中国最大火力发电厂
  12. 庆祝kkkbo出道!
  13. 计算机不打印怎么回事,打印机无法打印怎么办解决方案
  14. python爬虫(十三)selenium(Selenium入门、chromedriver、Phantomjs)
  15. System.Data.SqlClient.SqlError: Exclusive access could not be obtained because the database is in us
  16. 【实战技能】软件工程师与AI工程师的区别是什么?
  17. Phunware在全球发行Phun实用型代币
  18. python的实验报告大一心理_Python程序设计实验报告: 实验六
  19. uedit上传视频时提示输入的视频地址有误,请检查后再试
  20. 什么是STAR原则?

热门文章

  1. C#Web网站的创建
  2. D3D渲染技术之混合案例
  3. linux文件病毒怎么杀,Linux病毒清除实操有图有真相
  4. dou+账户余额怎么提现
  5. java和sql网上书店系统_网上书店管理系统(java。SQL Server数据库)
  6. 黑暗堵神传服务器维护是什么意思,神域之光8月8日停服维护公告
  7. 2.9 Go语言中的Switch
  8. R语言用Garch模型和回归模型对股票价格分析
  9. java计算机毕业设计安路友汽车租赁源码+数据库+系统+lw文档+部署
  10. flarum编辑器预览插件