我用 Tauri + Rust 写了一个 5MB 的 Markdown 阅读器,现在支持多标签和编辑了
项目地址:https://github.com/Neilooo/md-reader
最新版本:v0.2.0
大家好,这是我第一次在 CSDN 正式介绍这个小工具:MD Reader。
它是一个用 Tauri 2 + Rust + Vue 3 写的 Markdown 桌面应用。
最初我只是想做一个很简单的东西:
打开
.md文件要快,渲染要准,导出 PDF 要像看到的一样。
做到 v0.2.0 后,它已经从一个单纯的 Markdown 阅读器,升级成了一个支持 多标签、源码编辑、全文搜索、PDF/HTML/DOCX 导出 的轻量工具。
一句话介绍
MD Reader = 轻量 Markdown 阅读器 + 预览器 + 源码编辑器 + 导出工具。
它不想替代 VS Code,也不想做成 Obsidian 那样的知识库,更不打算做一个复杂的所见即所得编辑器。
它解决的是一个更具体的问题:
我只想快速打开、阅读、搜索、轻量修改、导出 Markdown 文件。
为什么要写这个工具?
日常开发里,我经常会打开这些文件:
- README.md
- CHANGELOG.md
- 接口文档
- 技术笔记
- AI 生成的 Markdown 内容
- 带 Mermaid / KaTeX / 代码块的说明文档
常见工具都能用,但不一定刚好:
| 工具 | 问题 |
|---|---|
| VS Code | 功能很强,但为了看一个 md 启动 IDE 有点重 |
| Typora | 写作体验好,但闭源收费,定位偏写作 |
| Obsidian | 适合知识库,但对单文件阅读来说偏重 |
| 浏览器扩展 | 本地文件、相对图片、公式、图表、导出经常不稳定 |
| 记事本 | 只能看纯文本,复杂 Markdown 没法读 |
所以我想做一个更轻的工具:
- 双击
.md就能打开 - 启动快
- 安装包小
- 公式、图表、代码块正常渲染
- 支持文件夹浏览和全文搜索
- 可以导出所见即所得的 PDF
- 偶尔需要时能直接改几行 Markdown
这就是 MD Reader 的出发点。
先看界面
主界面:多标签 + 文件树 + 阅读区 + 大纲

编辑模式:CodeMirror 源码编辑
公式和图表渲染

导出效果
暗色主题

---
v0.2.0 现在支持什么?
1. 多标签页
v0.2.0 加入了多标签页。
现在可以同时打开多个 Markdown 文件:
- 顶部标签栏切换文件
- 中键关闭标签
- 重复打开同一个文件时,直接聚焦原标签
- 有未保存修改的标签会显示提示圆点
- 应用重启后恢复上次打开的标签列表
每个标签都独立保存状态:
- 文件路径
- 原始内容
- 未保存草稿
- 编辑 / 预览模式
- 大纲
- 滚动位置
这意味着你可以在 A.md 读到一半,切到 B.md 改几行,再切回来,A.md 仍然停在原来的阅读位置。
2. Markdown 源码编辑
MD Reader 不是 Typora 那种所见即所得编辑器。
我给它的定位是:
轻量源码编辑,够用就好。
编辑器使用 CodeMirror 6,支持:
- Markdown 语法高亮
- 行号
- 折叠
- 括号匹配
- 查找
- 替换
- 跳转行
- 手动保存
- 另存为
常用快捷键:
| 快捷键 | 功能 |
|---|---|
Ctrl+F |
查找 |
Ctrl+H |
替换 |
Ctrl+G |
跳转行 |
Ctrl+S |
保存当前文件 |
Ctrl+Shift+S |
另存为 |
Ctrl+Shift+F |
全文搜索 |
Ctrl+P |
系统打印 / 另存为 PDF |
编辑后可以直接切回预览,不需要先保存。
这个体验很适合临时修改 README、笔记、说明文档。
3. 未保存修改保护
既然支持编辑,就必须保证用户内容不丢。
现在这些场景都会触发保护:
- 关闭脏标签
- 关闭窗口
- 切换文件
- 关闭文件夹
- 文件在外部被修改
弹窗会让你选择:
- 保存并继续
- 不保存继续
- 取消
如果有多个未保存标签,关闭窗口时会逐个确认。
这块看起来只是一个小弹窗,实际实现并不简单。
因为多标签以后,不能再只维护一个全局 currentFile,而是每个标签都有自己的草稿和状态。
4. 文件树、大纲和全文搜索
MD Reader 支持打开一个文件夹,然后递归扫描其中的 Markdown 文件。
常用场景:
- 浏览项目文档
- 搜索笔记目录
- 阅读一组技术文档
- 查看 AI 生成的一批 Markdown 文件
支持:
- 左侧文件树
- 右侧 TOC 大纲
- 大纲滚动同步高亮
- 内部 Markdown 链接跳转
Ctrl+Shift+F跨文件全文搜索
全文搜索是 Rust 后端做的,直接逐行扫描文件,响应很快。
5. PDF / HTML / DOCX 导出
目前支持三种导出:
| 格式 | 说明 |
|---|---|
| HTML | 自包含单文件,图片和 CSS 内嵌 |
| 调用系统 Edge / Chrome headless,所见即所得 | |
| DOCX | 通过 pandoc 导出 |
其中我最重视的是 PDF。
因为很多 Markdown 文档最终还是要发给别人,PDF 是最通用的格式。
PDF 导出为什么不用 pandoc + LaTeX?
一开始我也试过 pandoc + xelatex。
结果并不理想:
- 慢,一个几十 KB 的文档可能要 30 秒以上
- KaTeX 公式风格会变
- Mermaid 图表不稳定
- 代码高亮样式很难和预览保持一致
后来改成现在的方式:
前端已经把 Markdown 渲染好了,就直接让 Edge/Chrome 打印这个页面。
流程大概是:
- 前端克隆已经渲染好的 DOM
- 图片转成 base64
- 内嵌 CSS、KaTeX、代码高亮样式
- Rust 写出临时 HTML
- 调用 Edge / Chrome headless 打印 PDF
- 把生成的 PDF 拷贝到用户选择的位置
好处很明显:
- 速度通常 1-3 秒
- 所见即所得
- 不需要 LaTeX
- 公式、图表、代码块更接近预览效果
最近还修了一个 PDF 导出的边界问题:
某些 Edge 环境下,Edge 主进程返回成功后,PDF 文件会稍晚一点落盘。之前代码立刻检查文件是否存在,可能误报"PDF 未生成"。
现在改成:
Edge 返回成功后最多等待 10 秒,确认 PDF 文件真正生成并达到有效大小后再复制。
这样稳定性更好。
为什么选择 Tauri?
这个项目选择的是 Tauri 2,而不是 Electron。
原因很直接:我想要小体积和快启动。
| 对比项 | Tauri | Electron |
|---|---|---|
| 安装包体积 | 几 MB 级 | 常见几十到上百 MB |
| 内存占用 | 使用系统 WebView,较低 | 自带 Chromium,较高 |
| 后端能力 | Rust | Node.js |
| 启动速度 | 快 | 相对慢 |
| 原生集成 | 需要写 Rust | Node 生态更方便 |
MD Reader 这种工具类应用,不需要内置一整个 Chromium。
Tauri 更适合它的定位:
小、快、专注。
技术栈
目前主要技术栈:
- 桌面框架:Tauri 2
- 后端:Rust
- 前端:Vue 3 + TypeScript + Vite
- 编辑器:CodeMirror 6
- Markdown 渲染:markdown-it
- 公式:KaTeX
- 图表:Mermaid
- 代码高亮:highlight.js
- 文件监听:notify + notify-debouncer-mini
- 全文搜索:walkdir + Rust 逐行扫描
- PDF 导出:Edge / Chrome headless
- DOCX 导出:pandoc
安装和下载
项目地址:
https://github.com/Neilooo/md-reader
最新版本下载:
https://github.com/Neilooo/md-reader/releases/latest
Windows(正式版)
| 文件 | 说明 |
|---|---|
MD-Reader-0.2.0-windows-x64-setup.msi |
安装版,支持文件关联 |
MD-Reader-0.2.0-windows-x64-portable.exe |
绿色版,下载后直接运行 |
普通用户建议下载 MSI 安装版。
安装版会注册 .md / .markdown / .mdx 文件关联,之后可以直接双击 Markdown 文件打开。
macOS / Linux(实验版)
v0.2.0 开始,GitHub Actions 会自动生成 macOS / Linux 实验包。
| 平台 | 文件 |
|---|---|
| macOS | .dmg / .app.tar.gz |
| Linux | .AppImage / .deb / .rpm |
注意:这些包目前没有代码签名。
macOS 首次打开可能需要右键 → 打开,或者执行:
bash
xattr -dr com.apple.quarantine "MD Reader.app"
Linux AppImage 需要先赋予执行权限:
bash
chmod +x MD.Reader_0.2.0_amd64.AppImage
外部依赖说明
核心功能不需要额外安装工具。
| 功能 | 是否需要外部工具 |
|---|---|
| 阅读 / 编辑 / 多标签 | 不需要 |
| 文件树 / 全文搜索 | 不需要 |
| KaTeX / Mermaid 渲染 | 不需要 |
| HTML 导出 | 不需要 |
| PDF 导出 | 需要系统 Edge / Chrome |
| DOCX 导出 | 需要 pandoc |
如果你只用来阅读、编辑、搜索、导出 HTML / PDF,基本开箱即用。
只有 DOCX 导出需要单独安装 pandoc。
它适合谁?
我觉得 MD Reader 适合这些场景:
- 经常打开 README / CHANGELOG / 技术文档
- 不想为了看一个
.md文件启动 VS Code - 需要正确渲染公式和 Mermaid 图表
- 希望快速导出一份所见即所得 PDF
- 想要轻量工具,而不是完整知识库系统
- 偶尔需要直接改几行 Markdown
它不适合这些场景:
- 你需要复杂的所见即所得排版
- 你需要双链笔记、知识图谱、插件系统
- 你需要团队协作、云同步
- 你已经完全依赖 VS Code / Obsidian / Typora 工作流
它的定位很明确:
轻量、快速、专注的 Markdown 桌面工具。
后续计划
后面可能会继续做:
- 图片点击放大
- 更细的导出样式设置
- 自定义 CSS 主题
- 标签页右键菜单
- 命令面板
- macOS / Linux 稳定性验证
- 自动更新
暂时不会优先做:
- 所见即所得编辑器
- 插件系统
- 知识库 / 双链笔记
- 云同步
因为这些方向会把工具变重。
MD Reader 还是希望保持小而快。
总结
MD Reader 目前已经可以覆盖我自己的日常使用:
- 快速打开 Markdown
- 浏览文件夹文档
- 多标签切换
- 简单编辑
- 全文搜索
- 导出 PDF / HTML / DOCX
如果你也经常和 Markdown 文档打交道,可以试试看。
项目地址:
https://github.com/Neilooo/md-reader
如果觉得有用,欢迎 Star,也欢迎提 issue 反馈使用场景。
本文基于 MD Reader v0.2.0 编写。







