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 新增功能的擴充