EmDash 是一個 Astro 整合。你將它新增到 astro.config.mjs,選擇資料庫和儲存空間,並定義內容集合。本頁面介紹建構網站所需的模型。關於內部實作(表格佈局、請求路徑、程式碼產生),請參閱架構(內部)。
EmDash 為你的網站新增什麼
┌──────────────────────────────────────────────┐
│ 你的 Astro 網站 │
│ │
│ 你編寫的頁面和元件 │
│ │ │
│ │ getEmDashCollection() / getEmDashEntry()
│ ▼ │
│ ┌───────────────┐ ┌────────────────┐ │
│ │ 內容 │ │ 管理面板 │ │
│ │ (你的資料) │◄────►│ /_emdash/admin │ │
│ └───────────────┘ └────────────────┘ │
│ │ │
│ 資料庫 (SQLite / libSQL / D1 / Postgres) │
│ 媒體儲存 (本機 / R2 / S3) │
└──────────────────────────────────────────────┘
你正常編寫頁面和元件。EmDash 提供內容、用於編輯的管理面板,以及背後的資料庫和儲存空間。編輯者在管理面板中工作;你的頁面透過查詢函式讀取相同的內容。
你的內容模型
你在管理面板或使用 CLI 定義集合和欄位,EmDash 將內容儲存在其中。
隨時變更
隨時新增、重新命名、移除或變更集合和欄位的類型。 變更立即生效。
編輯者設計
內容編輯者可以透過管理 UI 設計整個模型。
類型化
從目前模型產生 TypeScript 類型,實現從 查詢到範本的自動完成。
可攜式
將模型匯出為 JSON 種子檔案用於版本控制,並在 另一個環境中套用它。
有關如何定義、變更、類型化和種子化的資訊,請參閱內容模型。
內容是即時的
EmDash 在執行階段透過 Astro 的 Live Collections 提供內容,因此編輯者所做的變更會立即可見。你使用兩個函式讀取內容:
import { getEmDashCollection, getEmDashEntry } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
const { entry: post } = await getEmDashEntry("posts", "my-post-slug");
有關篩選、分頁和草稿的資訊,請參閱查詢內容。
你設定什麼
你向整合傳遞資料庫和儲存後端。其他所有內容都有預設值。
import { defineConfig } from "astro/config";
import emdash, { local } from "emdash/astro";
import { sqlite } from "emdash/db";
export default defineConfig({
integrations: [
emdash({
database: sqlite({ url: "file:./data.db" }),
storage: local({ directory: "./uploads" }),
}),
],
});
- 資料庫:SQLite(本機或 libSQL)、Cloudflare D1 或 PostgreSQL。請參閱資料庫選項。
- 儲存空間:本機檔案系統、Cloudflare R2 或任何 S3 相容的媒體儲存空間。請參閱儲存選項。
使用外掛程式擴充
外掛程式對內容和媒體生命週期事件做出反應,並可以新增管理頁面、儀表板小工具和設定。有兩種格式:
- 原生外掛程式在主機環境中執行,具有完全存取權限。最適合第一方和受信任的外掛程式。
- 沙盒外掛程式在隔離的執行階段中執行,具有基於能力的權限。最適合第三方外掛程式。