欢迎光临
我们一直在努力

轻量、快速、专注:我用 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.md
  • CHANGELOG.md
  • 接口文档
  • 技术笔记
  • AI 生成的 Markdown 内容
  • 带 Mermaid / KaTeX / 代码块的说明文档

常见工具都能用,但不一定刚好:

工具问题
VS Code 功能很强,但为了看一个 md 启动 IDE 有点重
Typora 写作体验好,但闭源收费,定位偏写作
Obsidian 适合知识库,但对单文件阅读来说偏重
浏览器扩展 本地文件、相对图片、公式、图表、导出经常不稳定
记事本 只能看纯文本,复杂 Markdown 没法读

所以我想做一个更轻的工具:

  • 双击 .md 就能打开
  • 启动快
  • 安装包小
  • 公式、图表、代码块正常渲染
  • 支持文件夹浏览和全文搜索
  • 可以导出所见即所得的 PDF
  • 偶尔需要时能直接改几行 Markdown

这就是 MD Reader 的出发点。


先看界面

主界面:多标签 + 文件树 + 阅读区 + 大纲

在这里插入图片描述

编辑模式:CodeMirror 源码编辑

📸 截图占位:编辑模式截图,建议展示行号、Markdown 高亮、保存按钮、预览按钮。

公式和图表渲染

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

导出效果

docx
pdf

暗色主题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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 内嵌
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,较高
    后端能力 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 首次打开可能需要右键 → 打开,或者执行:

    xattr -dr com.apple.quarantine "MD Reader.app"

    Linux AppImage 需要先赋予执行权限:

    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 编写。

    赞(0)
    未经允许不得转载:171主机测评 » 轻量、快速、专注:我用 Tauri + Rust 打造了一款 5MB 的 Markdown 阅读器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址