144 lines
4.9 KiB
Markdown
144 lines
4.9 KiB
Markdown
# WriteFlow - 所见即所得的 Markdown 编辑器
|
||
|
||
> 一款基于 Tauri + Vue 3 开发的本地 Markdown 编辑器,复刻 Typora 的所见即所得体验,并加入多设备远程同步能力。
|
||
|
||
## 核心特性
|
||
|
||
- **所见即所得编辑** — 实时渲染 Markdown,打字即预览,告别双栏模式
|
||
- **本地优先** — 所有笔记以 `.md` 文件存储于本地文件系统,不依赖云服务即可完整使用
|
||
- **多设备同步** — 通过 S3 / WebDAV 等协议将笔记和图片自动同步到云端,多台设备无缝切换
|
||
- **跨平台** — 基于 Tauri v2,原生支持 Windows、macOS、Linux
|
||
- **轻量高速** — Rust 后端 + Vue 3 前端,启动快、内存占用低
|
||
- **扩展丰富** — 支持主题切换、代码高亮、数学公式、流程图、目录大纲、导出 PDF/HTML 等
|
||
|
||
## 技术栈
|
||
|
||
| 层 | 技术 | 说明 |
|
||
|----|------|------|
|
||
| 桌面框架 | Tauri v2 | Rust 驱动,比 Electron 更轻量 |
|
||
| 前端 | Vue 3 + TypeScript | Composition API + `<script setup>` |
|
||
| UI 组件 | Naive UI | Vue3 高颜值 UI 库,TypeScript 原生支持 |
|
||
| Markdown 渲染 | markdown-it / Milkdown | 所见即所得编辑与渲染 |
|
||
| 后端 | Rust (Tauri) | 文件管理、同步引擎、编辑器核心 |
|
||
| 同步协议 | S3 / WebDAV / Git | 多协议远程同步 |
|
||
|
||
## 快速开始
|
||
|
||
### 前置要求
|
||
|
||
- [Node.js](https://nodejs.org/) >= 18
|
||
- [pnpm](https://pnpm.io/) >= 8
|
||
- [Rust](https://www.rust-lang.org/) >= 1.70
|
||
- [Tauri CLI](https://tauri.app/) >= 2.0
|
||
|
||
### 开发运行
|
||
|
||
```bash
|
||
# 安装前端依赖
|
||
pnpm install
|
||
|
||
# 启动开发模式(前端 + Tauri 窗口)
|
||
pnpm tauri dev
|
||
|
||
# 仅启动前端(浏览器调试)
|
||
pnpm dev
|
||
```
|
||
|
||
### 构建打包
|
||
|
||
```bash
|
||
pnpm tauri build
|
||
```
|
||
|
||
构建产物位于 `src-tauri/target/release/bundle/`。
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
tauri-app/
|
||
├── index.html # 入口 HTML
|
||
├── package.json # 前端依赖与脚本
|
||
├── vite.config.ts # Vite 配置
|
||
├── tsconfig.json # TypeScript 配置
|
||
├── src/ # Vue 3 前端源码
|
||
│ ├── main.ts # Vue 应用入口
|
||
│ ├── App.vue # 根组件
|
||
│ ├── assets/ # 静态资源
|
||
│ └── components/ # 通用组件
|
||
├── src-tauri/ # Tauri (Rust) 后端源码
|
||
│ ├── Cargo.toml # Rust 依赖
|
||
│ ├── tauri.conf.json # Tauri 配置
|
||
│ ├── build.rs # 构建脚本
|
||
│ ├── icons/ # 应用图标
|
||
│ └── src/
|
||
│ ├── main.rs # Rust 入口
|
||
│ └── lib.rs # 核心逻辑
|
||
└── public/ # 公共静态资源
|
||
```
|
||
|
||
## 开发路线图
|
||
|
||
### Phase 1 — MVP(基础编辑器)
|
||
- [x] 项目初始化(Tauri + Vue 3 + TypeScript)
|
||
- [ ] 基础 Markdown 编辑器(实时预览)
|
||
- [ ] 文件树浏览与文件管理
|
||
- [ ] 本地文件读写(新建、打开、保存)
|
||
- [ ] 基础主题切换(亮色/暗色)
|
||
|
||
### Phase 2 — 同步引擎
|
||
- [ ] S3 协议同步(AWS S3 / MinIO / Cloudflare R2)
|
||
- [ ] 同步状态管理(冲突检测、版本对比)
|
||
- [ ] 图片资源的自动上传与链接替换
|
||
- [ ] 离线编辑 + 联网自动同步
|
||
|
||
### Phase 3 — 高级编辑功能
|
||
- [ ] 代码高亮(语法着色)
|
||
- [ ] 数学公式(KaTeX / MathJax)
|
||
- [ ] 表格编辑器
|
||
- [ ] Mermaid 流程图
|
||
- [ ] 目录大纲 / 文档导航
|
||
- [ ] 图片拖拽粘贴上传
|
||
- [ ] 导出 PDF / HTML / Word
|
||
|
||
### Phase 4 — 多协议同步
|
||
- [ ] WebDAV 协议支持
|
||
- [ ] Git 仓库同步
|
||
- [ ] WebRTC 局域网直连同步
|
||
- [ ] SMB / NFS 局域网共享
|
||
|
||
### Phase 5 — 体验打磨
|
||
- [ ] 多标签页管理
|
||
- [ ] 全文搜索
|
||
- [ ] 快捷键体系
|
||
- [ ] 自定义主题
|
||
- [ ] 插件系统
|
||
|
||
## 同步方案设计
|
||
|
||
### S3 协议(Phase 2 首发)
|
||
|
||
```
|
||
┌──────────┐ ┌──────────┐ ┌──────────┐
|
||
│ 设备 A │ │ S3 存储 │ │ 设备 B │
|
||
│ (本地笔记) │◄──►│ (云端同步) │◄──►│ (本地笔记) │
|
||
└──────────┘ └──────────┘ └──────────┘
|
||
```
|
||
|
||
- 支持标准 S3 协议(AWS S3、阿里云 OSS、腾讯云 COS、MinIO、Cloudflare R2)
|
||
- 增量同步,仅上传变更文件
|
||
- 冲突策略:保留冲突副本,用户手动合并
|
||
|
||
### 未来扩展
|
||
|
||
| 协议 | 适用场景 | 优先级 |
|
||
|------|---------|--------|
|
||
| S3 | 云存储(公有云 / 私有化 MinIO) | Phase 2 |
|
||
| WebDAV | 自建 NAS、云盘(坚果云、NextCloud) | Phase 4 |
|
||
| Git | 程序员笔记、版本追溯 | Phase 4 |
|
||
| WebRTC | 局域网极速同步,无需中转 | Phase 4 |
|
||
| SMB/NFS | 纯局域网共享,无需云端 | Phase 4 |
|
||
|
||
## License
|
||
|
||
MIT
|