博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React中富文本编辑器的技术选型调研
阅读量:6804 次
发布时间:2019-06-26

本文共 2721 字,大约阅读时间需要 9 分钟。

前言

富文本编辑器是项目中不可或缺的部分,目前市面上可以选择的富文本编辑器种类繁多,如何在项目中选择一款集轻量,美观,稳定,坑少,满足需求的富文本编辑器变成了团队中一个重要的问题。

现在项目中使用的是 WangEditor,为了寻找到更好的替代品,我针对 Ant Design 官方推荐的两款的富文本编辑器做了调研。Ant Design 称它们为“社区精选组件”,在心理层面上觉得应该会比较稳定,尤其是结合 Ant Design 使用。

我对这两款富文本编辑器都进行了使用,并结合目前的项目需求进行了比较。下面是我的使用体验。

react-quill

第一款富文本编辑器叫作 react-quill,是国外一个社区维护的,贡献者有二三十人。quill 在英文中是鹅毛笔的意思,听起来还是很有美感的。

基本使用

下面是 react-quill 的最基本的用法,非常简单。

import ReactQuill from 'react-quill';import 'react-quill/dist/quill.snow.css'class MyComponent extends React.Component {  constructor(props) {    super(props)    this.state = { text: '' }    this.handleChange = this.handleChange.bind(this)  }  handleChange(value) {    this.setState({ text: value })  }  render() {    return (      
) }}

自定义工具栏

核心就是配置modulesformatsmodules是配置工具栏上的内容,即决定工具栏上有什么;formats是决定哪些工具栏选项可以启用,即决定工具栏的哪些可以生效。实例代码如下:

class MyComponent extends Component {  constructor(props) {    super(props);    this.state = {      text: '',    }  }  modules = {    toolbar: [      [{ 'header': [1, 2, false] }],      ['bold', 'italic', 'underline','strike', 'blockquote'],      [{'list': 'ordered'}, {'list': 'bullet'}, {'indent': '-1'}, {'indent': '+1'}],      ['link', 'image'],      ['clean']    ],  };  formats = [    'header',    'bold', 'italic', 'underline', 'strike', 'blockquote',    'list', 'bullet', 'indent',    'link', 'image'  ];  render() {    return (      
); }}

这里还有更高级的用法,我们可以在工具栏上加入自己设计的JXS元素,但是目前的项目需求用不到,这里就不展开了。

优势

  1. 简洁美观大方。
  2. 对于用户从各种地方粘贴过来的文字兼容得很好,不管你之前带有什么奇奇怪怪的格式,统统转化成了带有<p></p>标签的的文本。
  3. 跟 Ant Design 和 React 的融入度非常高,可以很方便的放在<Form></Form>作为一个受控组件。传入的 value 就是 HTML 字符串,不需要做任何格式转换。

劣势

  1. 图片格式是转成了base64,这跟目前项目中图片上传方式不兼容。虽然这个问题有解决方法,。
  2. 不支持 Excel 格式的数据。因为目前项目中使用的 WangEditor 支持表格数据,所以如果老数据中存在表格,那么替换后的表格数据显示将成为一个问题。

braft-editor

这是由中国人开发的个人项目,。

基本使用

实例代码如下,需要注意的一点是,接收的 value 不再是 HTML 字符串了,而是editorState格式。

可以通过editorState.toHTML()得到 HTML 字符串。

import React from 'react';import 'braft-editor/dist/index.css';import BraftEditor from 'braft-editor';class Braft extends React.Component {  constructor(props) {    super(props);    this.state = { editorState: BraftEditor.createEditorState(null) };  }  handleChange = editorState => {    this.setState({ editorStste });  };  render() {    return (      
); }}

自定义工具栏

通过配置属性controls来自定义工具栏,也可以自定义工具栏图标的文字和样式。示例如下:

const controls = [    'undo', 'redo', 'separator',    {        key: 'bold', // 使用key来指定控件类型        title: '加粗选中文字哦', // 自定义控件title        text: '点我加粗', // 使用自定义文案来代替默认图标(B),此处也可传入jsx    },    'italic', 'underline', 'strike-through']

优势

  1. 有“全屏”功能,可以全屏编辑内容,还是很炫酷的。
  2. 作者是中国人,文档清晰易读。

劣势

  1. 图片格式转成了base64,跟目前项目中图片上传方式不兼容。
  2. 不支持 Excel 格式的数据。

总结

这两款编辑器的稳定性和对异常文本的处理能力都强于 WangEditor,但是存在的问题是都对于表格数据不支持,所以对于老数据的显示存在风险。

转载地址:http://zynwl.baihongyu.com/

你可能感兴趣的文章
矩阵下标操作
查看>>
windows下的redis和redismyadmin
查看>>
JS window对象的top、parent、opener含义介绍 以及防止网页被嵌入框架的代码
查看>>
c语言实现数组转置,加减,乘法运算
查看>>
iOS隐私政策
查看>>
Oracle 后台进程(四)CKPT进程
查看>>
学习网站
查看>>
Android Framework中的线程Thread及它的threadLoop方法
查看>>
Oracle单实例情况下的library cache pin的问题模拟与问题分析
查看>>
Oracle XE安装具体解释
查看>>
Nginx之web服务器
查看>>
__autoload函数
查看>>
Sicily 7693. Cards 解题报告
查看>>
Windows phone 7开发--页面间跳转与传值
查看>>
bzoj5450 轰炸
查看>>
p1552 [APIO2012]派遣
查看>>
[BZOJ 2002][Hnoi 2010]Bounce 弹飞绵羊
查看>>
1045 access denied for user 'root'@'localhost' using password yes
查看>>
接口测试基础
查看>>
asp.net+ajax+WebServer 输入自动提示历史记录
查看>>