mdlib 是由开发者 bahdotsh 创建的一个多功能 Markdown 工具集合,包含两个主要组件:一个轻量级 Markdown 解析库和一个功能完善的个人 Wiki 系统。该项目完全采用 Rust 实现,兼具高性能与跨平台特性。
核心组件
- Markdown 解析库
特性:
-
轻量级实现,代码简洁高效
-
支持 CommonMark 标准的核心子集
-
零外部依赖的纯 Rust 实现
-
提供简单的 AST 访问接口
基础语法支持:
-
多级标题(# ~ ######)
-
段落与换行处理
-
文本样式(粗体、斜体、代码)
-
有序/无序列表
-
代码块(支持语法高亮)
-
链接与图片嵌入
-
水平分割线
-
引用区块
高级功能:
-
自定义渲染器接口
-
安全 HTML 过滤
-
扩展语法标记支持
- 个人 Wiki 系统
核心功能:
编辑体验
-
实时双栏预览(左侧编辑,右侧即时渲染)
-
智能补全(自动完成 Markdown 语法)
-
版本历史记录(基于文件系统)
-
冲突检测与解决
知识管理
-
全文检索(基于倒排索引)
-
标签云可视化
-
双向链接支持(类似 Roam Research)
-
知识图谱自动生成
系统特性
-
便携式单文件部署
-
自动跨设备同步(通过文件系统监听)
-
插件系统(支持 WASM 扩展)
-
多设备实时协作
技术架构
解析器设计
pub struct MarkdownParser {
options: ParseOptions,
extensions: Vec<Extension>,
}
impl MarkdownParser {
pub fn new() -> Self { /* ... */ }
pub fn parse(&self, text: &str) -> Document { /* ... */ }
pub fn to_html(&self, doc: &Document) -> String { /* ... */ }
}
Wiki 系统架构
mdlib-wiki/
├── frontend/ # WASM 前端
├── backend/ # Rust 服务端
│ ├── search/ # 搜索引擎
│ ├── sync/ # 同步模块
│ └── api/ # RESTful API
└── core/ # 共享核心
└── parser/ # Markdown 解析
使用场景
作为库使用
[dependencies]
mdlib = { version = "0.2", features = ["html"] }
use mdlib::{Markdown, RenderOptions};
let md = "## Hello\nThis is **Markdown**";
let html = Markdown::new(md)
.with_options(RenderOptions::safe())
.to_html();
```
作为 Wiki 使用
```bash
# 启动服务
mdlib --port 8080 ~/my_wiki
# 生成静态站点
mdlib export --output ./public
性能表现
基准测试(对比常见 Rust Markdown 库):
库名称 | 解析速度 (MB/s) | 内存占用 | HTML 输出大小 |
---|---|---|---|
mdlib | 45.2 | 2.3MB | 1:1.2 |
pulldown-cmark | 52.1 | 3.1MB | 1:1.3 |
comrak | 38.7 | 4.5MB | 1:1.4 |
生态系统
编辑器插件:VS Code、IntelliJ 全家桶
CLI 工具:
-
mdlib serve - 启动预览服务器
-
mdlib export - 导出静态网站
-
mdlib check - 验证链接有效性
-
移动端:通过 PWA 支持离线访问
路线图
-
v0.3:表格支持、TeX 数学公式
-
v0.4:插件市场、主题系统
-
v1.0:数据库后端、团队协作
社区支持
-
活跃的 Discord 社区
-
完善的示例仓库
-
中文文档支持
-
新手引导教程
该项目特别适合:
-
需要嵌入式 Markdown 解析的 Rust 开发者
-
寻求替代 Jupyter Notebook 的数据科学家
-
希望建立个人知识库的极客用户
-
需要文档系统的中小团队
通过 cargo install mdlib --features=full 可安装完整功能套件。