EmDash 是一个 Astro 原生的内容管理系统。它将你熟悉的 CMS 模式——集合、分类法、菜单、小工具和精致的管理后台——直接带入你的 Astro 站点,并提供完整的 TypeScript 支持与可移植部署。
EmDash 是什么
EmDash 是专为 Astro 构建的 CMS。它使用 Astro 6 的 Live Content Collections,在运行时提供内容而无需重新构建。内容存放在兼容 SQLite 的数据库中(D1、libSQL、本地 SQLite),媒体则存放在兼容 S3 的存储中(R2、本地文件系统)。
主要特点:
- 数据库优先的模式 — 集合与字段在数据库中定义,而非代码中。可在管理后台创建并修改内容类型。
- Live Collections — 内容变更立即可用,无需静态重建。
- 插件系统 — 受 WordPress 启发的钩子、存储、设置与管理界面扩展。
- 可移植到云端 — 可运行在 Cloudflare(Workers + D1 + R2)、Node.js、本地 SQLite 以及任意兼容 S3 的存储上。
EmDash 不是什么
- 不是无头 CMS — EmDash 与 Astro 深度集成,不是通过 API 调用的独立服务。
- 不兼容 WordPress — 没有 PHP,也不能直接运行 WordPress 插件。但 WordPress 的内容与概念可以清晰迁移。
- 不是页面搭建器 — EmDash 聚焦结构化内容。可视化页面搭建请使用 Astro 组件。
EmDash 适合谁
代理机构的开发者
用可复用的插件与主题快速交付客户站点。没有 PHP 安全更新烦恼,也没有 插件冲突。
独立开发者
内置 CMS 的全栈框架。无需再维护单独的无头 CMS。
内容编辑
直观的管理面板。无需接触代码即可创建与编辑内容。
WordPress 用户
内容与插件的迁移路径。现代工具链,熟悉的概念。
架构一览
┌─────────────────────────────────────────────────────────────┐
│ 你的 Astro 站点 │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ EmDash 集成 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ 内容 │ │ 管理 │ │ 插件 │ │ │
│ │ │ 引擎 │ │ 面板 │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐│ │
│ │ │ 数据层 ││ │
│ │ │ SQLite/D1 ←→ Kysely ←→ R2/S3/本地 ││ │
│ │ └───────────────────────────────────────────────────┘│ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Astro 框架 │ │
│ │ Live Collections • 会话 • 中间件 │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
核心概念
在深入之前,请先熟悉这些术语:
- Collections — 在数据库中定义的内容类型(文章、页面、产品等)
- Fields — 集合的属性(标题、正文、价格等)
- Taxonomies — 分类体系(分类、标签、自定义分类法)
- Menus — 可在后台编辑的导航结构
- Widget Areas — 用于侧栏与页脚等位置的可配置内容区域
- Plugins — 通过钩子、存储与界面扩展功能的插件