2 分•作者: ellizabeth•5 个月前
我之前尝试使用 SuperDoc 来完成一个项目,但一直遇到各种限制。自定义功能比预想的要难,性能也达不到我的要求。因此,我决定自己构建一个名为 \HawkDoc\ 的编辑器,并使用 Claude 作为编码助手来完成大部分开发工作。<p>HawkDoc 专注于快速文档编辑,打字零延迟。许多编辑器在每次按键时都会重新渲染 UI 的大部分内容,或者为了支持基本的格式设置而引入繁重的依赖项。我想要一个更简单、更快的编辑器。<p>技术栈:<p>- Lexical (Meta) 作为编辑器引擎。其基于节点的架构避免了在格式设置操作期间进行完全重新渲染。
- Yjs + Hocuspocus 用于使用 CRDT 进行实时协作,实现无冲突的文档同步。
- Redis + PostgreSQL 用于存储。Yjs 的增量数据首先写入 Redis,然后每 30 秒刷新到 Postgres,这样数据库就不会收到按键级别的写入操作。
- React + TypeScript 用于前端 UI。
- @react-pdf/renderer 用于客户端 PDF 导出,支持水印。<p>目前已实现的功能:<p>- 基于块的编辑器
- 斜杠命令
- 模板变量注入(`{{variable_name}}` 渲染为带样式的标签)
- 图片上传
- Markdown、HTML 和 PDF 导出
- 自动保存
- 选区气泡菜单<p>正在进行中的功能:<p>- 实时协作 UI
- 文档工作区和文件列表
- DOCX 导入
- 版本历史
- 身份验证 UI(JWT 后端已实现)<p>Claude Code 帮助加速了早期开发,尤其是在构建编辑器集成和导出流程时。我很想听听其他人是如何在使用 AI 助手构建新的开发者工具的。<p>该项目采用 MIT 许可证,欢迎提供反馈和贡献。<p>GitHub:
[<a href="https://github.com/hawk-doc/hawkdoc" rel="nofollow">https://github.com/hawk-doc/hawkdoc</a>](<a href="https://github.com/hawk-doc/hawkdoc" rel="nofollow">https://github.com/hawk-doc/hawkdoc</a>)