主题
背景与免责声明
⚠️ 一句话:这是个人学习用的开源练习项目,界面与交互模仿飞书文档, 与飞书 / 字节跳动无任何关联、非官方产物、禁止商用,侵权风险由使用者自负。
背景
为什么写
用于个人学习与技术研究的练习项目,目的是吃透富文本编辑器的工程实现:
- ProseMirror 的文档模型与事务(transaction)机制
- Tiptap 3 的扩展(Extension / Node / Mark)、命令与插件体系
- Vue 2.7 渲染层与编辑器状态的边界(
EditorContent、装饰 widget、浮层定位) - 具体问题:块级结构、折叠与高亮、标题自动编号、列表缩进与序号、气泡菜单、表格交互、导入导出归一化
仓库里的大量代码注释,以及 dev/ 开发手册 中的踩坑清单, 本质上是学习笔记,不是产品交付物。
为什么长这样
把「飞书文档」作为还原目标,是为了有一个明确、可对照的高标准参照物 —— 行距、字号、菜单层级、 图标位置这类细节都去真飞书里实测过(见 DEVELOPMENT.md 的「排版实测值」)。
这是模仿练习(类似临摹字帖),不是复刻其实现:
- 所有代码、样式、图标均为本仓库自写
- 未使用飞书的任何代码、接口、设计源文件、商标或 Logo
- 未接入飞书开放平台或任何其内部服务
为什么开源
方便自己回溯,也方便与他人交流编辑器实现细节;顺带给同样在研究 Tiptap / Vue 2 编辑器的人一个可跑的样本。
免责声明
非官方、无授权 本项目与飞书、Lark、字节跳动及其关联公司没有任何隶属、合作、授权或背书关系, 不是其官方产品或衍生版本。文中「飞书 / Lark / Feishu」仅作为描述交互风格时的指代性说明。
禁止商用 不得用于任何商业用途,包括但不限于:作为商业产品或其组成部分对外销售、交付、运营, 或用于面向客户 / 用户的收费服务。仅允许在个人学习、研究与技术评估场景中使用。
侵权风险自负 界面布局与交互的模仿在部分司法辖区可能涉及知识产权、外观设计或不正当竞争方面的风险。 使用者应在使用前自行完成合规评估,并自行承担由此产生的全部后果与责任。 作者不对因使用、修改、分发本软件而产生的任何直接或间接后果承担责任。
按现状提供(AS IS) 软件按「AS IS」提供,不附带任何明示或默示的担保,包括但不限于适销性、特定用途适用性 与非侵权性的担保。详见 开源协议。
开源协议
本项目采用 MIT License,完整文本见仓库根目录 LICENSE。
要点:
- 允许自由使用、复制、修改、合并、发布、分发、再许可,包括商业性使用(许可正文层面)
- 必须在所有副本或实质部分中保留版权声明与许可声明
- 软件按「AS IS」提供,作者不承担任何责任
注意:
LICENSE末尾的「附加声明」是使用提示与风险告知,载明了本项目的学习定位、 界面参考来源、禁止商用的要求与风险自负原则。请在使用、二次分发前完整阅读并遵守。
第三方资源与协议
包内静态资源全部本地化打包,不请求任何 CDN;各自遵循原始开源协议:
| 资源 | 用途 | 协议 |
|---|---|---|
| KaTeX(样式 + 字体) | 数学公式渲染 | MIT |
| highlight.js | 代码高亮 | BSD-3-Clause |
| emojibase | Emoji 数据 | MIT |
| docx | Word 导出 | MIT |
| mammoth | Word 导入 | BSD-2-Clause |
| marked | Markdown → HTML | MIT |
| turndown | HTML → Markdown | MIT |
| Tiptap / ProseMirror | 编辑器内核 | MIT |