富文本编辑器 - RichTextEditor

1,362 阅读2分钟

定义

富文本、富文本,丰富的文本展示,能以丰富的样式展示一段文本,表达文本中的重点,满足用户表达的丰富性。

丰富的样式:字号字体颜色文本背景颜色粗体斜体引用代码块链接无序列表有序列表任务列表删除线高亮下划线

场景

创建网页内容、博客文章、社交媒体帖子

示例

h1

h2

h3

h4
h5
h6

加粗 斜体 连接 高亮 删除线 fdfdfd 背景颜色

  • 无序列表1
  • 无序列表1
  1. 有序列表1
  2. 有序列表2
  • 任务列表1
  • 任务列表2

引用

// 代码块
let a = 1

富文本需要运行在浏览器上,而html,全称Hyper-Type-Mark-language(超文本标记语言),其里面的标签和样式刚好能满足富文本的丰富样式的要求:h1h2h3h4h5h6pstrongfont-sizefont-familycolorspanbackground-coloremblockquoteaulliolinputdelmark等。

QA

问:一个富文本容器里全是不可以编辑的元素,那用户怎么编辑?
答:以下是一个实现富文本编辑器的思维链(COT)

image.png

当然还要处理样式冲突、redo栈、undo栈、toolbar等


问:有没有更厉害的方式来实现富文本编辑器?
答:有的,本文是主流的富文本编辑器的实现方式,当然还有别的方式来实现啦~~

富文本编辑器:本质就是数据逻辑展示

  1. Google docs:文档系统,利用canvas来渲染大文档,提升文档加载体验,能基于canvas做各种优化手段,自持各种事件,项目可控性极高。

    • 数据层:未知
    • 逻辑层:拦截并自持用户的交互事件,keyboardEvent、mouseEvent、Selection等
    • 渲染:使用自持的数据层 + 自持的渲染器,通过canvas来渲染内容

严格的说,google docs是文档系统,并不是富文本编辑器,这里列出来,是为了提供另一种思路来实现富文本编辑器。

ps:高手都喜欢用canvas