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 호환 스토리지. 스토리지 옵션을 참조하세요.
플러그인으로 확장
플러그인은 콘텐츠 및 미디어 라이프사이클 이벤트에 반응하고 관리 페이지, 대시보드 위젯 및 설정을 추가할 수 있습니다. 두 가지 형식이 있습니다:
- 네이티브 플러그인은 호스트 환경에서 전체 액세스 권한으로 실행됩니다. 퍼스트파티 및 신뢰할 수 있는 플러그인에 가장 적합합니다.
- 샌드박스 플러그인은 기능 기반 권한이 있는 격리된 런타임에서 실행됩니다. 서드파티 플러그인에 가장 적합합니다.
플러그인을 선택하고 설치하려면 플러그인 개요를, 플러그인을 만들려면 플러그인 만들기를 참조하세요.