Appearance
Kapitel 5: Seiten & Ansichten
In diesem Kapitel lernen Sie, wie Sie Seiten in Nuxt 3 erstellen, Komponenten verwenden und Meta-Tags für SEO konfigurieren.
5.1 Seitenkomponenten erstellen
Seitenkomponenten befinden sich im pages/-Verzeichnis und repräsentieren die einzelnen Routen Ihrer Anwendung.
Einfache Seite (pages/about.vue):
vue
<script setup>
// Kein manueller Import erforderlich!
const title = 'Über uns'
</script>
<template>
<div class="about-page">
<h1>{{ title }}</h1>
<p>Wir sind ein tolles Team aus Entwicklern.</p>
<p>Unser Ziel ist es, tolle Webanwendungen zu bauen.</p>
</div>
</template>
<style scoped>
.about-page {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
</style>Öffnen Sie die Seite im Browser.
5.2 Komponenten-Auto-Import
Eines der stärksten Features von Nuxt 3 ist der automatische Import von Komponenten.
Beispiel:
Schritt 1: Komponente erstellen (components/MyButton.vue)
vue
<template>
<button class="my-button">
<slot></slot>
</button>
</template>
<style scoped>
.my-button {
background: #00dc82;
color: white;
border: none;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
}
</style>Schritt 2: Komponente auf einer Seite verwenden
vue
<!-- pages/index.vue -->
<template>
<div>
<h1>Willkommen!</h1>
<!-- Kein Import erforderlich! -->
<MyButton>Klick mich!</MyButton>
</div>
</template>5.3 Komponenten-Schichtung (Best Practices)
Für gut strukturierte Projekte sollten Sie Komponenten in drei Kategorien unterteilen:
1. Globale Komponenten (components/)
- Wiederverwendbare UI-Elemente
- Beispiele:
Button.vue,Input.vue,Modal.vue
2. Seitenkomponenten (components/)
- Spezifisch für eine Seite
- Beispiele:
HeroSection.vue,ProductCard.vue
3. Layout-Komponenten (layouts/)
- Globale Struktur (Header, Footer, Sidebar)
- Beispiel:
default.vue,admin.vue
Beispiel: layouts/default.vue
vue
<template>
<div>
<AppHeader />
<main>
<slot /> <!-- Hier wird die Seite eingefügt -->
</main>
<AppFooter />
</div>
</template>5.4 Statische Assets verarbeiten
Nuxt 3 unterstützt zwei Arten von statischen Assets:
1. public/-Verzeichnis (Direkter Zugriff)
- Dateien sind unter der Root-URL verfügbar
- Beispiel:
public/logo.png→/logo.png
Verwendung in Templates:
vue
<template>
<img src="/logo.png" alt="Logo" />
</template>2. assets/-Verzeichnis (Verarbeitet)
- Dateien werden von Vite optimiert
- SCSS, LESS, Bilder, Fonts
Beispiel: Bild importieren
vue
<script setup>
import logo from '~/assets/img/logo.png'
</script>
<template>
<img :src="logo" alt="Logo" />
</template>Beispiel: SCSS-Datei importieren
vue
<style lang="scss">
@use '~/assets/scss/main.scss';
</style>5.5 Meta-Tags konfigurieren (useHead())
Für SEO (Suchmaschinenoptimierung) und Social Media Sharing (Open Graph) müssen Sie Meta-Tags konfigurieren.
Methode 1: useHead() Composable
vue
<script setup>
useHead({
title: 'Meine Nuxt App - Startseite',
meta: [
{ name: 'description', content: 'Dies ist eine tolle Nuxt 3 Anwendung.' },
{ name: 'keywords', content: 'Nuxt, Vue, JavaScript, SSR' },
{ property: 'og:title', content: 'Meine Nuxt App' },
{ property: 'og:description', content: 'Tolle Nuxt 3 Anwendung mit SEO!' }
],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' }
]
})
</script>Methode 2: useSeoMeta() (Spezialisiert für SEO)
vue
<script setup>
useSeoMeta({
title: 'Meine Nuxt App',
description: 'Eine tolle Nuxt 3 Anwendung',
ogTitle: 'Meine Nuxt App',
ogDescription: 'Tolle Nuxt 3 Anwendung mit SEO!',
ogImage: 'https://example.com/image.png',
twitterCard: 'summary_large_image'
})
</script>5.6 Fortgeschrittene Meta-Konfiguration
Dynamische Titel für verschiedene Seiten:
app.vue (Globaler Titel-Template):
vue
<script setup>
useHead({
titleTemplate: '%s - Meine Nuxt App' // %s wird durch Seitentitel ersetzt
})
</script>pages/about.vue (Seiten-spezifisch):
vue
<script setup>
useHead({
title: 'Über uns' // Ergibt: "Über uns - Meine Nuxt App"
})
</script>5.7 Zusammenfassung
In diesem Kapitel haben Sie gelernt:
- ✅ Seitenkomponenten im
pages/-Verzeichnis zu erstellen - ✅ Den Auto-Import-Mechanismus für Komponenten zu nutzen
- ✅ Komponenten zu strukturieren (global, seiten-spezifisch, layouts)
- ✅ Statische Assets in
public/undassets/zu verwalten - ✅ Meta-Tags für SEO mit
useHead()unduseSeoMeta()zu konfigurieren
Nächste Schritte: Im nächsten Kapitel lernen wir Datenabfrage & Zustandsverwaltung – wie man Daten von APIs lädt und den Anwendungszustand verwaltet.
📚 Weiterführende Ressourcen
Nächstes Kapitel: Kapitel 6: Datenabfrage & Zustandsverwaltung →
