EmDash 简介

本页内容

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 — 通过钩子、存储与界面扩展功能的插件

下一步