MarkdownPro:一款断网也能完美运行的桌面 Markdown 编辑器 MarkdownPro一款断网也能完美运行的桌面 Markdown 编辑器为什么我又造了一个轮子因为我不接受「Typora 付费后的预览白屏」和「VS Code 写 Markdown 时漫长的扩展冷启动」。一、不说废话先说它解决了什么市面上的 Markdown 编辑器大致分两派Typora / MarkText 等独立编辑器体验好但 Typora 已收费MarkText 停止维护。更关键的是它们大多依赖marked、highlight.js等外部库通过 WebView 渲染一旦你处于离线环境飞机上、内网开发机预览直接罢工。VS Code / Obsidian 等编辑器插件功能强大但笨重冷启动慢Markdown 写作只是它们的副业你还要忍受插件冲突和配置地狱。MarkdownPro 的核心主张只有一条零外部依赖断网照样用。二、自研解析器把渲染权攥在自己手里这是 MarkdownPro 和其他编辑器的本质区别。它没有引入marked、markdown-it、remark等任何第三方解析库而是从零实现了一套 Markdown → HTML 的转换引擎。2.1 双阶段解析管线原始 Markdown 文本 │ ▼ ┌──────────────┐ │ 阶段一块级解析 │ 标题 / 段落 / 代码块 / 表格 / 列表 / 引用 / 分割线 └──────┬───────┘ │ 结构化 HTML 片段代码块先做占位符隔离 ▼ ┌──────────────┐ │ 阶段二行内解析 │ 粗体 / 斜体 / 删除线 / 链接 / 图片 / 行内代码 └──────┬───────┘ │ ▼ 最终 HTML注入预览区为什么分两阶段代码块内的 Markdown 语法不应该被解析比如代码注释里的**所以第一阶段先把代码块提取出来用占位符替换第二阶段只处理普通文本的行内元素最后再回填代码块。这种设计避免了正则互相干扰的经典坑。2.2 表格解析不用第三方库也能处理 GFM 表格表格是 Markdown 解析中最容易出 bug 的部分。MarkdownPro 的处理方式是连续的行检测——当检测到以|开头且以|结尾的行时进入表格收集模式遇到非表格行时自动闭合。分隔行|---|---|被识别为表头/表体的分界上方做thead下方做tbody。2.3 十五种语言语法高亮也不是 highlight.js代码高亮同样自研没有引入任何高亮库。核心思路是按语言维护关键字字典 正则分层着色高亮层级示例正则策略关键字function,const,return\b(keywords)\b动态拼接字符串hello,world([\])(??(\?))\2.)*?\1注释// comment,# comment按语言区分单行/多行注释语法数字42,3.14\b(\d\.?\d*)\b函数名hello(\b(\w)\s*\(支持的语言JavaScript、TypeScript、Go、Java、C、C、Python、Rust、PHP、Ruby、Shell、SQL、HTML、CSS、Markdown。暗色模式下所有颜色变量自动切换不需要额外配置。三、不止是编辑器它是一个本地笔记工具3.1 双轨存储机制MarkdownPro 支持两种存储模式的无缝切换本地目录模式通过 Electron 主进程直接读写硬盘上的.md文件你设置一个文件夹所有笔记就是真实的文件。缓存兼容模式当用户没有设置目录时自动切换到localStorage存储保证零配置开箱即用。两种模式对上层 UI 完全透明用户感知不到差异。3.2 侧边栏文件管理不是打开一个文件编辑的简单模型而是内置了完整的笔记管理能力新建笔记自定义模态框替代原生 prompt、重命名双击文件名触发内联编辑、删除带确认对话框、导出保存到任意路径。3.3 防抖自动保存编辑内容通过 Vue 的watch监听1 秒防抖后自动写入localStorage做缓存。下次启动时自动恢复上次编辑的内容和文件名意外关闭也不丢数据。四、技术选型与架构Electron 主进程Node.js ├── 文件系统操作读写/列表/删除/重命名 ├── 目录选择对话框 ├── 自定义确认对话框 └── 导出保存对话框 │ │ IPC 桥接 │ Vue 3 渲染进程 ├── MarkdownEditor.vue单文件组件所有逻辑在此 ├── 自研解析器 语法高亮纯 JS零依赖 └── CSS 变量驱动暗黑模式堆栈很轻Electron 39 Vue 3.5 electron-vite 5 electron-builder 26。没有引入 UI 组件库所有样式用原生 CSS 变量手写打包体积可控。五、快速上手# 克隆仓库gitclone gitgitee.com:mwmzuishuai/markdown-pro.gitcdmarkdown-pro# 安装依赖npminstall# 启动开发模式npmrun dev# 构建 Windows 安装包npmrun build:win环境要求Node.js 18npm 9。六、写在最后MarkdownPro 不是一个功能最全的编辑器它的目标很明确在任何网络环境下都能获得稳定、流畅的 Markdown 写作体验。不依赖 CDN不引入外部渲染库不向第三方服务发请求。你写的每一个字、每一段代码都在本地完成解析和渲染。如果你厌倦了 Typora 的付费弹窗受够了在线编辑器的网络依赖或者单纯想在飞机上安心写文档——试试 MarkdownPro。仓库地址https://gitee.com/mwmzuishuai/markdown-pro安装包地址安装包