shipyard unterstützt vollständig Astros Server-Side Rendering (SSR) Modus, der es dir ermöglicht, Seiten bei jeder Anfrage zu rendern statt zur Build-Zeit.
Server-Modus ist ideal für:
Für statische Inhalte wie Dokumentation und Blog-Beiträge empfehlen wir den statischen Modus (Standard) für bessere Performance und einfachere Bereitstellung.
Astro benötigt einen Adapter für Server-Side Rendering. Wähle einen basierend auf deiner Deployment-Plattform:
# Für Cloudflare Workers/Pages
npm install @astrojs/cloudflare
# Für Node.js
npm install @astrojs/node
# Für Vercel
npm install @astrojs/vercel
# Für Netlify
npm install @astrojs/netlify
Aktualisiere deine astro.config.mjs um den Server-Modus zu aktivieren:
import cloudflare from '@astrojs/cloudflare' // oder dein gewählter Adapter
import tailwind from '@astrojs/tailwind'
import shipyard from '@levino/shipyard-base'
import shipyardDocs from '@levino/shipyard-docs'
import shipyardBlog from '@levino/shipyard-blog'
import { defineConfig } from 'astro/config'
export default defineConfig({
output: 'server', // Server-Modus aktivieren
adapter: cloudflare(), // Dein gewählter Adapter
integrations: [
tailwind({ applyBaseStyles: false }),
shipyard({
brand: 'Meine Seite',
title: 'Meine Seite',
tagline: 'Erstellt mit shipyard',
navigation: {
docs: { label: 'Doku', href: '/docs' },
blog: { label: 'Blog', href: '/blog' },
},
}),
shipyardDocs(),
shipyardBlog(),
],
})
Bei Verwendung des Server-Modus:
src/pages/ können dynamische serverseitige Logik enthaltenDu kannst dynamische Seiten erstellen, die Daten zur Anfragezeit abrufen:
---
// src/pages/dashboard.astro
import { Page } from '@levino/shipyard-base/layouts'
// Dies wird bei jeder Anfrage ausgeführt
const userData = await fetchUserData()
---
<Page title="Dashboard" description="Dein persönliches Dashboard">
<h1>Willkommen, {userData.name}!</h1>
<p>Letzte Anmeldung: {userData.lastLogin}</p>
</Page>
Für optimale Performance kannst du statische und server-gerenderte Seiten mit Astros Hybrid-Modus mischen:
export default defineConfig({
output: 'hybrid', // Hybrid-Modus aktivieren
adapter: cloudflare(),
// ...
})
Im Hybrid-Modus sind Seiten standardmäßig statisch. Füge export const prerender = false zu jeder Seite hinzu, die Server-Side Rendering benötigt:
---
// src/pages/api-data.astro
export const prerender = false
const data = await fetch('https://api.example.com/data')
---
Sieh dir den Server-Modus in Aktion an: Server-Modus Demo
Jeder Adapter hat spezifische Deployment-Anforderungen. Konsultiere die Astro-Dokumentation für deine gewählte Plattform: