EmDash è un’integrazione Astro. La aggiungi a astro.config.mjs, scegli un database e uno storage, e definisci le collezioni di contenuto. Questa pagina copre il modello di cui hai bisogno per costruire un sito. Per gli aspetti interni (layout delle tabelle, percorso delle richieste, generazione del codice), vedi Architettura (interni).
Cosa aggiunge EmDash al tuo sito
┌──────────────────────────────────────────────┐
│ Il tuo sito Astro │
│ │
│ Pagine e componenti che scrivi │
│ │ │
│ │ getEmDashCollection() / getEmDashEntry()
│ ▼ │
│ ┌───────────────┐ ┌────────────────┐ │
│ │ Contenuto │ │ Pannello admin│ │
│ │ (i tuoi dati)│◄────►│ /_emdash/admin │ │
│ └───────────────┘ └────────────────┘ │
│ │ │
│ Database (SQLite / libSQL / D1 / Postgres) │
│ Storage media (locale / R2 / S3) │
└──────────────────────────────────────────────┘
Scrivi pagine e componenti normalmente. EmDash fornisce il contenuto, un pannello admin per modificarlo, e il database e lo storage che ci stanno dietro. Gli editor lavorano nel pannello admin; le tue pagine leggono lo stesso contenuto tramite funzioni di query.
Il tuo modello di contenuto
Definisci collezioni e campi — nel pannello admin o con la CLI — ed EmDash memorizza il contenuto in esse.
Modificalo in qualsiasi momento
Aggiungi, rinomina, rimuovi o ricambia il tipo di collezioni e campi quando ne hai bisogno. Le modifiche hanno effetto immediatamente.
Progettato dagli editor
Un editor di contenuti può progettare l’intero modello tramite l’UI admin.
Tipizzato
Genera tipi TypeScript dal modello corrente per l’autocompletamento dalla query al template.
Portabile
Esporta il modello come file JSON seed per il controllo di versione, e applicalo in un altro ambiente.
Vedi il modello di contenuto per come definire, modificare, tipizzare e seminare.
Il contenuto è dal vivo
EmDash serve il contenuto tramite le Live Collections di Astro a runtime, quindi le modifiche apportate da un editor sono immediatamente visibili. Leggi il contenuto con due funzioni:
import { getEmDashCollection, getEmDashEntry } from "emdash";
const { entries: posts } = await getEmDashCollection("posts");
const { entry: post } = await getEmDashEntry("posts", "my-post-slug");
Vedi Interrogare il contenuto per filtraggio, paginazione e bozze.
Cosa configuri
Passi un database e un backend di storage all’integrazione. Tutto il resto ha un valore predefinito.
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" }),
}),
],
});
- Database: SQLite (locale o libSQL), Cloudflare D1, o PostgreSQL. Vedi Opzioni database.
- Storage: il filesystem locale, Cloudflare R2, o qualsiasi storage compatibile con S3 per i media. Vedi Opzioni storage.
Estensione con plugin
I plugin reagiscono agli eventi del ciclo di vita di contenuto e media e possono aggiungere pagine admin, widget della dashboard e impostazioni. Ci sono due formati:
- Plugin nativi vengono eseguiti nell’ambiente host con accesso completo. Ideali per plugin first-party e affidabili.
- Plugin sandboxed vengono eseguiti in un runtime isolato con permessi basati sulle capacità. Ideali per plugin di terze parti.
Vedi la panoramica dei plugin per scegliere e installare plugin, o creare un plugin.
Prossimi passi
Collezioni
Definisci collezioni di contenuto e tipi di campo.
Modello di contenuto
Comprendi il modello di contenuto.
Pannello admin
Scopri cosa offre il pannello admin a editor e amministratori.