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 等富内容在渲染层处理。
  • 导入规则通过测试锁定。
内容平台的模块化边界设计 | Remi Resume