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 不是什麼
- 不是 Headless CMS — EmDash 與 Astro 緊密整合,不是透過 API 呼叫的獨立服務。
- 不相容 WordPress — 沒有 PHP,也不能直接執行 WordPress 外掛。但 WordPress 的內容與概念可以清楚遷移。
- 不是頁面產生器 — EmDash 聚焦結構化內容。視覺化頁面編排請使用 Astro 元件。
EmDash 適合誰
代理商開發者
用可重複使用的外掛與佈景主題快速交付客戶網站。不必處理 PHP 安全性更新,也沒有 外掛衝突。
獨立開發者
內建 CMS 的全端框架。不必再維護額外的 Headless CMS。
內容編輯
直覺的管理面板。不必碰程式碼就能建立與編輯內容。
WordPress 使用者
內容與外掛的遷移路徑。現代工具鏈,熟悉的概念。
架構一覽
┌─────────────────────────────────────────────────────────────┐
│ 你的 Astro 網站 │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ EmDash 整合 │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │ │
│ │ │ 內容 │ │ 管理 │ │ 外掛 │ │ │
│ │ │ 引擎 │ │ 面板 │ │ │ │ │
│ │ └─────────────┘ └─────────────┘ └──────────────┘ │ │
│ │ │ │
│ │ ┌───────────────────────────────────────────────────┐│ │
│ │ │ 資料層 ││ │
│ │ │ SQLite/D1 ←→ Kysely ←→ R2/S3/本機 ││ │
│ │ └───────────────────────────────────────────────────┘│ │
│ └───────────────────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ Astro 框架 │ │
│ │ Live Collections • 工作階段 • 中介軟體 │ │
│ └───────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
核心概念
在深入之前,請先熟悉這些名詞:
- Collections — 在資料庫中定義的內容類型(文章、頁面、產品等)
- Fields — 集合的屬性(標題、內文、價格等)
- Taxonomies — 分類體系(分類、標籤、自訂分類法)
- Menus — 可在後台編輯的導覽結構
- Widget Areas — 用於側欄與頁尾等位置的可設定內容區域
- Plugins — 透過勾點、儲存與介面擴充功能的外掛