EmDash 是一个 Astro 原生内容管理系统。它将熟悉的 CMS 模式——集合、分类、菜单、小部件和精致的管理界面——直接带入您的 Astro 站点,并提供完整的 TypeScript 支持和可移植部署。
EmDash 是什么
EmDash 是专为 Astro 构建的 CMS。它使用 Astro 6 的实时内容集合在运行时提供内容,因此编辑会立即显示。内容存储在 SQL 数据库中——SQLite、libSQL、Cloudflare D1 或 PostgreSQL——媒体存储在 S3 兼容的存储中(R2 或本地文件系统)。
主要特点:
- 可视化内容建模 — 从管理界面定义和更改集合和字段;更改立即生效。
- 实时集合 — 内容在运行时提供,因此编辑会立即显示。
- 插件系统 — 受 WordPress 启发的钩子、存储、设置和管理界面扩展。
- 云可移植 — 在 Cloudflare(Workers + D1 + R2)或 Node.js 上运行,支持 SQLite、libSQL 或 PostgreSQL 以及任何 S3 兼容的存储。
EmDash 不是什么
- 不是无头 CMS — EmDash 与 Astro 紧密集成并在同一部署中运行,而不是作为通过 API 调用的独立服务。
- 不兼容 WordPress — 它不运行 PHP 或 WordPress 插件。WordPress 内容和概念迁移到 EmDash 等效物。
- 不是页面构建器 — EmDash 管理结构化内容。使用 Astro 组件构建视觉布局。
EmDash 适合谁
代理开发者
使用可重用的插件和主题快速搭建客户站点。插件在隔离的上下文中运行, 具有显式 API。
独立开发者
内容管理是 Astro 站点的一部分,作为一个项目部署和管理。
内容编辑
在管理面板中创建和编辑内容。
WordPress 用户
内容和插件的迁移路径。现代工具,熟悉的概念。
架构一览
下图显示了 EmDash 如何位于 Astro 站点内,将内容引擎、管理面板和插件连接到数据层。
┌─────────────────────────────────────────────────────────────┐
│ Your Astro Site │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ EmDash Integration │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ Content │ │ Admin │ │ Plugins │ │ │
│ │ │ Engine │ │ Panel │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐│ │
│ │ │ Data Layer ││ │
│ │ │Database (SQLite/libSQL/D1/Postgres) + media store ││ │
│ │ └───────────────────────────────────────────────────┘│ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Astro Framework │ │
│ │ Live Collections • Sessions • Middleware │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
核心概念
这些是整个文档中使用的关键概念:
- Collections(集合) — 在数据库中定义的内容类型(文章、页面、产品等)
- Fields(字段) — 集合的属性(标题、内容、价格等)
- Taxonomies(分类) — 分类系统(类别、标签、自定义分类)
- Menus(菜单) — 管理员可编辑的导航结构
- Widget Areas(小部件区域) — 侧边栏和页脚的可配置内容区域
- Plugins(插件) — 通过钩子、存储和 UI 添加功能的扩展