架構

本頁內容

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 相容的媒體儲存空間。請參閱儲存選項

使用外掛程式擴充

外掛程式對內容和媒體生命週期事件做出反應,並可以新增管理頁面、儀表板小工具和設定。有兩種格式:

  • 原生外掛程式在主機環境中執行,具有完全存取權限。最適合第一方和受信任的外掛程式。
  • 沙盒外掛程式在隔離的執行階段中執行,具有基於能力的權限。最適合第三方外掛程式。

請參閱外掛程式概述以選擇和安裝外掛程式,或建立外掛程式

後續步驟

管理面板

檢視管理面板為編輯者和管理員提供的功能。