轻量、快速、专注:我用 Tauri + Rust 打造了一款 5MB 的 Markdown 阅读器

轻量、快速、专注:我用 Tauri + Rust 打造了一款 5MB 的 Markdown 阅读器 我用 Tauri Rust 写了一个 5MB 的 Markdown 阅读器现在支持多标签和编辑了项目地址https://github.com/Neilooo/md-reader最新版本v0.2.0下载地址https://github.com/Neilooo/md-reader/releases/latest大家好这是我第一次在 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.mdCHANGELOG.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 语法高亮行号折叠括号匹配查找替换跳转行手动保存另存为常用快捷键快捷键功能CtrlF查找CtrlH替换CtrlG跳转行CtrlS保存当前文件CtrlShiftS另存为CtrlShiftF全文搜索CtrlP系统打印 / 另存为 PDF编辑后可以直接切回预览不需要先保存。这个体验很适合临时修改 README、笔记、说明文档。3. 未保存修改保护既然支持编辑就必须保证用户内容不丢。现在这些场景都会触发保护关闭脏标签关闭窗口切换文件关闭文件夹文件在外部被修改弹窗会让你选择保存并继续不保存继续取消如果有多个未保存标签关闭窗口时会逐个确认。这块看起来只是一个小弹窗实际实现并不简单。因为多标签以后不能再只维护一个全局currentFile而是每个标签都有自己的草稿和状态。4. 文件树、大纲和全文搜索MD Reader 支持打开一个文件夹然后递归扫描其中的 Markdown 文件。常用场景浏览项目文档搜索笔记目录阅读一组技术文档查看 AI 生成的一批 Markdown 文件支持左侧文件树右侧 TOC 大纲大纲滚动同步高亮内部 Markdown 链接跳转CtrlShiftF跨文件全文搜索全文搜索是 Rust 后端做的直接逐行扫描文件响应很快。5. PDF / HTML / DOCX 导出目前支持三种导出格式说明HTML自包含单文件图片和 CSS 内嵌PDF调用系统 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。原因很直接我想要小体积和快启动。对比项TauriElectron安装包体积几 MB 级常见几十到上百 MB内存占用使用系统 WebView较低自带 Chromium较高后端能力RustNode.js启动速度快相对慢原生集成需要写 RustNode 生态更方便MD Reader 这种工具类应用不需要内置一整个 Chromium。Tauri 更适合它的定位小、快、专注。技术栈目前主要技术栈桌面框架Tauri 2后端Rust前端Vue 3 TypeScript Vite编辑器CodeMirror 6Markdown 渲染markdown-it公式KaTeX图表Mermaid代码高亮highlight.js文件监听notify notify-debouncer-mini全文搜索walkdir Rust 逐行扫描PDF 导出Edge / Chrome headlessDOCX 导出pandoc安装和下载项目地址https://github.com/Neilooo/md-reader最新版本下载https://github.com/Neilooo/md-reader/releases/latestWindows正式版文件说明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.gzLinux.AppImage/.deb/.rpm注意这些包目前没有代码签名。macOS 首次打开可能需要右键 → 打开或者执行xattr-drcom.apple.quarantineMD Reader.appLinux AppImage 需要先赋予执行权限chmodx MD.Reader_0.2.0_amd64.AppImage外部依赖说明核心功能不需要额外安装工具。功能是否需要外部工具阅读 / 编辑 / 多标签不需要文件树 / 全文搜索不需要KaTeX / Mermaid 渲染不需要HTML 导出不需要PDF 导出需要系统 Edge / ChromeDOCX 导出需要 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 编写。