我当前的博客系统对文档 Markdown 格式支持分析与使用指南
最近整理博客时,发现有些 Markdown 格式在我的博客系统中显示效果不太理想,于是决定深入分析一下系统支持的 Markdown 格式。今天就来分享一下我的分析结果,希望能对使用这个博客系统的朋友有所帮助。
核心解析引擎
我的博客系统使用的是 Showdown.js 作为核心解析引擎,这是一个功能强大的 Markdown 解析器库,支持多种扩展格式。
支持的 Markdown 格式
基础格式
- 标题:支持 H1-H6 标题,使用 # 符号表示
- 段落:直接输入文本即可
- 粗体:使用 ** 包围文本,如 粗体
- 斜体:使用 * 包围文本,如 斜体
- 链接:使用 文本 格式,如 Google
- 图片:使用
格式,如alt
示例图片 - 列表:支持有序列表(1. 2. 3.)和无序列表(- * +)
- 引用:使用 > 符号表示,如 > 这是引用内容
- 代码块:使用 ``` 包围代码,可指定语言
- 行内代码:使用
包围代码,如console.log("hello")` - 水平线:使用 --- 表示
扩展格式
- 表格:支持 GitHub 风格表格
| 表头1 | 表头2 |
| --- | --- |
| 内容1 | 内容2 |
- 删除线:使用
包围文本,如删除线~~ - 任务列表:使用 - [x] 表示已完成,- [ ] 表示未完成
- [x] 任务1
- [ ] 任务2
- GitHub 风格代码块:支持指定语言进行语法高亮
console.log("Hello World");
特殊处理
- 代码高亮:使用 Prism.js 实现,支持多种编程语言
- 支持的语言:javascript, typescript, bash, css, markup, json, python, go, yaml, sql, nginx, docker, diff, rust, toml, ini, makefile
- 图片优化:自动包装为 figure 元素,支持点击放大查看
- 阿里云 OSS 图片:自动转换为 WebP 格式,提升加载速度
- 媒体元素:支持视频、音频和 iframe 嵌入
- 表格:自动添加响应式容器,在移动端显示更友好
- 自动生成摘要:提取文章前 150 个字符作为摘要
不支持的格式
缺失的扩展
- 脚注:[^footnote] 格式不支持
- 定义列表:不支持定义列表格式
- 数学公式:LaTeX 公式不支持
- 图表:Mermaid 图表不支持
- 目录生成:[TOC] 标签不支持
- 语义化标签:如提示框、警告框等不支持
功能限制
- 代码块行号:不支持显示代码行号
- 代码复制按钮:代码块没有复制按钮
- 响应式图片:除了阿里云 OSS 图片外,其他图片不会自动响应式处理
实例展示
代码高亮示例
// JavaScript 代码示例
function greet() {
console.log("Hello, Markdown!");
}
greet();
# Python 代码示例
def greet():
print("Hello, Markdown!")
greet()
表格示例
| 功能 | 支持情况 | 备注 |
|---|---|---|
| 基础格式 | ✅ | 完全支持 |
| 表格 | ✅ | GitHub 风格 |
| 代码高亮 | ✅ | 支持多种语言 |
| 脚注 | ❌ | 不支持 |
| 数学公式 | ❌ | 不支持 |
任务列表示例
- 分析 Markdown 解析引擎
- 测试支持的格式
- 整理不支持的格式
- 实现扩展功能
解析流程
- YAML 头部解析:使用 front-matter 库解析文章头部元数据
- Markdown 转换:使用 Showdown 库将 Markdown 转换为 HTML
- 摘要生成:提取前 150 个字符作为文章摘要
- 代码高亮:使用 Prism.js 为代码块添加语法高亮
- 媒体处理:包装图片、视频、音频和 iframe 为 figure 元素
- 表格处理:为表格添加响应式容器
- 元数据处理:处理发布时间、更新时间等信息
优化建议
- 添加脚注支持:通过 Showdown 扩展实现
- 添加数学公式支持:集成 MathJax 或 KaTeX
- 添加图表支持:集成 Mermaid
- 添加目录生成:实现 [TOC] 功能
- 添加代码块行号:增强代码可读性
- 添加代码复制按钮:提升用户体验
- 图片压缩:在构建时自动压缩图片
- 响应式图片:为所有图片添加响应式处理
总结
我的博客系统使用 Showdown.js 作为核心解析引擎,支持大多数常用的 Markdown 格式,并添加了一些实用的扩展功能。虽然缺少一些高级功能,但对于一般的博客文章已经足够使用。
系统的解析流程清晰,代码结构合理,具有良好的可扩展性。通过添加适当的扩展和优化,可以进一步提升系统的功能和性能。
如果你在使用过程中遇到格式显示问题,可以参考本文档了解哪些格式是支持的,哪些是不支持的,以便更好地编写你的博客文章。