跳到主要内容

文档编辑器项目梳理

项目介绍​

  • 面向开发者和写作者的桌面编辑器,强调本地文件管理、富文本编辑、Git 版本管理和桌面效率能力。

Keep Notes 是一个基于 Electron、React 和 TypeScript 开发的 Markdown 桌面笔记应用。它直接管理本地 Markdown 文件,支持富文本编辑和源码模式切换,同时提供文件树、多标签、多面板、全文搜索、Git 状态管理、提醒事项、通知以及 PDF/Word/HTML 等格式导出。 保证富文本编辑器和 Markdown 源码之间的双向同步,以及在自动保存、文件外部修改、多面板复用和大文档场景下保持数据一致性和编辑流畅性。

技术栈​

  • Electron:桌面窗口、文件系统、托盘、全局快捷键、系统通知
  • React 19 + TypeScript
  • Vite / electron-vite:开发和构建
  • Zustand:全局状态管理和部分配置持久化
  • BlockNote + ProseMirror/Tiptap:富文本编辑器
  • CodeMirror:代码块编辑和语法高亮
  • react-resizable-panels:可调整布局
  • @tanstack/react-virtual:文件树和大文档虚拟化
  • simple-git:Git 操作
  • markdown-it:导出 HTML
  • html-to-docx:导出 Word
  • electron-updater:应用自动更新
  • Vitest + Testing Library:单元测试和组件测试

技术架构​

项目遵循 Electron 的进程隔离:

  • Renderer 不直接访问 Node.js 文件系统
  • preload 通过 contextBridge 暴露受限 API
  • Main Process 负责文件、Git、窗口和系统能力
  • 当前配置为 contextIsolation: true、nodeIntegration: false
text
React Renderer
├─ Zustand 状态管理
├─ 编辑器、文件树、Git、提醒、导出 UI
└─ preload 暴露的安全 API
│
IPC 通信
│
Electron Main Process
├─ 文件系统读写
├─ fs.watch 文件监听
├─ Git 操作
├─ 提醒定时器和通知
├─ 多窗口、托盘、快捷键
└─ PDF/Word/图片导出

技术难点​

  • 富文本和 Markdown 双向同步
  • 自动保存和并发写入
  • 外部文件修改和冲突处理
  • 大文档性能

-外部文件修改和冲突处理 自动保存和并发写入