# md-reader-web
**Repository Path**: bzm121/md-reader-web
## Basic Information
- **Project Name**: md-reader-web
- **Description**: WEB 端 Markdown 阅读器:纯原生 JS+HTML+CSS,三态视图 + 代码高亮 + 文档大纲 + 五类图形离线渲染,与官网、鸿蒙、Android 共用同一份渲染内核
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-09
- **Last Updated**: 2026-11-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# md-reader-web
> WEB 端 Markdown 阅读器 — 纯原生 JS + HTML + CSS,**零框架、零打包、零构建**,浏览器直接跑。
打开 `.md` 文件即可阅读:预览 / 源码 / 分屏三态切换、表格列宽自适应、代码高亮、文档大纲,
以及**五类图形的离线渲染**(流程图与时序图、公式、数据图表、关系图、思维导图)。
## ✨ 功能
- **三态视图切换** — 预览(只读渲染)/ 源码(可编辑)/ 分屏(左编辑右预览,**实时同步**)
- **本地文件打开** — 点工具栏文件夹图标选 `.md` / `.markdown` 文件,亦可直接拖拽到窗口
- **编码自动识别** — UTF-8 优先,出现替换字符(U+FFFD)时自动回退 GB18030
- **完整 Markdown 语法** — 标题 / 段落 / 列表 / 引用 / 代码块 / 分割线 / 图片 / 链接 / 表格
- **表格列宽自适应** — 列宽按内容计算、同行等高、超宽横向滚动
(列宽常量与鸿蒙端 `MarkdownParser.ts`、Android 端 `MarkdownParser.kt` 共享同一套)
- **代码高亮** — 内置 highlight.js,按需懒加载,**不联网**
- **文档大纲** — 从已渲染正文提取标题,三档响应式:宽屏右侧常驻 / 中屏折成边缘标签 / 窄屏抽屉;
标题少于 6 条不显示;点击按 `#文档&h=标题` 深链跳转
- **流程图与时序图** — ` ```mermaid ` 围栏块内置渲染引擎,**不联网**;SVG 经白名单清洗后内联
- **公式** — ` ```katex ` / ` ```latex ` / ` ```tex ` / ` ```math ` 围栏块,KaTeX 离线排版(含全套字体)
- **数据图表** — ` ```echarts ` / ` ```chart ` 围栏块,ECharts 离线出图
- **关系图** — ` ```graphviz ` 围栏块,Graphviz 离线布局
- **思维导图** — ` ```markmap ` 围栏块,markmap + d3 离线渲染
- **图形放大** — 点击图形进入查看器,支持缩放 / 拖拽 / 双指缩放
- **顶栏菜单** — 低频操作收进「⋯」,含正文宽度、字号与主题设置(偏好存本地)
- **键盘友好** — 编辑器支持 undo/redo、全选、复制粘贴;编辑实时同步预览(200ms 防抖)
- **离线优先** — 解析、渲染、高亮、出图全部在浏览器本地完成,阅读链路不发起任何远端请求
## 🚀 启动方式
### 方式 A:起静态服务器(推荐)
```bash
python -m http.server 8123 --bind 127.0.0.1
```
然后浏览器打开 。
> `index.html` 使用 ES 模块(`