Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RichEditor/富文本编辑器] 我知道这是天坑,也知道社区中有很多优秀的开源的组件,但还是希望大家看下这个需求,而且功能要求相对简单的多。 #2563

Closed
kwooshung opened this issue Oct 19, 2023 · 1 comment
Labels
wontfix This will not be worked on

Comments

@kwooshung
Copy link

kwooshung commented Oct 19, 2023

这个功能解决了什么问题

重要的事情说三遍!我知道富文本编辑器是这是天坑;我知道富文本编辑器是这是天坑;我知道富文本编辑器是这是天坑;

TDesign只需要实现富文本最最最最基本的功能就行,比如选区,浏览器兼容,插入行内节点(加粗什么的都不用实现,开发者自己去做,Arco Design只需要有对应的api就好),插入块级节点(也是和行内节点一样)。

富文本编辑器,社区中有很多优秀的组件,我相信大家都找到过不少,我最近就因为富文本,找了好多第三方开源的富文本编辑器,也看了好多资料;

tiptap:很优秀,好扩展,问题也不少(就不一一列举了)
remirror:同样很优秀,缺点也不少(同样不一一列举了)
slate.js和prosemirror:非常优秀,但是学习曲线略高。
draft.js:Facebook现在已不维护,推荐使用 lexical
lexical:虽然功能很强大很优秀,bug的确也不少,还是略显庞大。
以上部分组件,都不太好实现全选,块级没法增加选择的样式,比如图片无法在视觉上直接显示ctrl+a的选中,

当然还有很多优秀的组件或框架,但是他们都有的问题是:

要么不可扩展
要么扩展费劲
要么好扩展,但文档太简陋
要么功能不少,内置了很多功能,略显臃肿
英文文档对于我来讲,虽然阅读起来不费劲。如果有自己的编辑器,而且是母语的中文文档,要比英文文档来的轻松得多
我目前用的是 lexical,和 arco design 融为一体还是需要点儿时间的。

你建议的方案是什么

现在说说我期望的组件有啥吧,功能真的很少,但是兼容性方面确实很麻烦,以下是我能想到的功能:

  1. 从外观上来讲,就像个textarea一样,
  2. 可以有API插入块级别元素和文本格式,具体像(加粗、斜体……)这些不用实现;
    • 开发者只需要定义命令,比如:bold
    • 执行命令:bold
    • 编辑器知道:用什么渲染,比如实现bold的html,react组件/vue组件
    • 开发者可以通过api判断光标位置或选区的内容是什么
  3. 只需要实现一个段落,当然这个段落也可以开发者使用自己的组件或者Typography.Paragraph来替代。
  4. 工具栏,不用实现,交给开发者
  5. 可以存在placholder的定义,比如开发者插入段落的时候是一种提示,插入标题的时候是一种提示,只需要提供api,内部的逻辑开发者自己写。
  6. 浮动工具栏,就是那种选中文字,在上方出现工具栏的组件,也不用实现具体内容,只需要有个类似的节点,让开发者传入即可。
  7. 块级可以选中,开发者传入样式什么的就行
  8. 有选择选区相关api
  9. api一定要有插入换行
  10. 可以给编辑器定义高度,但是不给高度,就是换行自动增高。
  11. 拖拽排序段落、块级、行内的任意文本
  12. 可导出html/json,一定要支持json,这样数据保存还有读取,甚至文章内容预览的时候,可以很灵活运用数据。

同类产品的issues
ant-design/ant-design#45432
#2563

@github-actions
Copy link
Contributor

👋 @kwooshung,感谢给 TDesign 提出了 issue。
请根据 issue 模版确保背景信息的完善,我们将调查并尽快回复你。

@HaixingOoO HaixingOoO added the wontfix This will not be worked on label Nov 14, 2023
@uyarn uyarn closed this as completed Dec 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

No branches or pull requests

3 participants