2026-06-09 / Unraid Nas
内容平台的模块化边界设计
内容平台要把采集、存储、渲染、分类、搜索和发布拆成清晰边界,避免 Markdown、SQLite 和页面逻辑相互缠绕。
模块化架构Content Platform服务边界
内容平台的模块化边界设计
内容平台看起来只是“读 Markdown 然后展示”,但一旦加入多语言、分类、标签、数据库导入、Mermaid 渲染和搜索,边界不清就会迅速失控。
核心边界
flowchart LR
A["Markdown / 外部草稿"] --> B["导入器"]
B --> C["SQLite 内容库"]
C --> D["Repository 投影"]
D --> E["Markdown Renderer"]
E --> F["Blog Page"]
D --> G["分类 / 标签 / 相关文章"]
实际工程场景
当中文和英文属于同一篇文章时,数据库应该存一行,多语言字段做投影。标签应存稳定 id,展示层再根据语言映射 label。
常见误区
- 路由直接依赖中文标题。
- 标签存展示文案,导致中英文无法关联。
- Markdown 渲染器承担数据查询职责。
- 导入脚本和页面逻辑各自处理一套规则。
最佳实践
- Storage、Projection、Rendering 分离。
- slug 使用稳定英文 id。
- Mermaid 等富内容在渲染层处理。
- 导入规则通过测试锁定。