Nuxt das Vue-Framework für SEO-starke Web-Apps
Nuxt ist das etablierte Meta-Framework für Vue.js und ergänzt Vue um alles, was komplette Websites und Web-Apps brauchen: File-basiertes Routing, Server-Side Rendering (SSR), Static Site Generation (SSG) und eine Full-Stack-Schicht mit Server-Routes. Damit liefert Nuxt schnelle Ladezeiten und vollständig gerenderte Seiten, was besonders bei SEO-kritischen Projekten zählt. Wir bauen mit Nuxt Corporate-Websites, Content-Plattformen, Blogs und E-Commerce-Sites, inklusive Anbindung an Headless-CMS (Strapi, Sanity, Contentful) und Markdown-Inhalte. Ob statisch generiert oder als Node-Server ausgeliefert, richten wir das Projekt so ein, dass Ihre Agentur es unter eigenem Namen betreibt.
01 / Einsatz
Wofür sich Nuxt eignet
- SEO-optimierte Websites
- Content-Management-Systeme
- E-Commerce-Plattformen
- Corporate Websites
- Blogs und Magazine
02 / Einblick
Nuxt in der Praxis
Ein Inhalt. Drei Umsetzungen.
Einen Artikel laden und darstellen: dieselbe Aufgabe in Next.js, Nuxt und SvelteKit. Vergleichen Sie direkt im Code, wie Datenabruf, Fehlerbehandlung und Seitenausgabe aufgebaut sind.
Eine Server Component lädt den Inhalt und gibt die fertige Seite zurück. notFound übernimmt fehlende Inhalte; weitere Fehler gehen an die Fehlergrenze der Route.
Passt zu React-Projekten, bei denen serverseitige Inhalte und interaktive Komponenten gemeinsam geplant werden.
Server- und Client-Grenzen sowie Cache-Regeln müssen bewusst festgelegt werden. no-store macht das Beispiel nachvollziehbar, ist aber keine allgemeine Cache-Empfehlung.
Code in Next.js
import { notFound } from 'next/navigation'
type Article = { title: string; summary: string }
export default async function Page() {
const response = await fetch('https://cms.example.com/api/article', {
cache: 'no-store',
})
if (response.status === 404) notFound()
if (!response.ok) throw new Error('Der Inhalt konnte nicht geladen werden.')
const article: Article = await response.json()
return <article>
<h1>{article.title}</h1>
<p>{article.summary}</p>
</article>
}useFetch lädt den Inhalt beim serverseitigen Rendern und übergibt ihn im Seiten-Payload an Vue. Das Template nutzt die geladenen Daten.
Passt, wenn Vue bereits gesetzt ist und Seiten, Datenabrufe sowie Server-Routen in einem gemeinsamen Projekt organisiert werden sollen.
Schlüssel und Lebensdauer gemeinsam genutzter Daten sowie Route Rules müssen abgestimmt sein. Ein voller Seitenaufruf ist nicht dasselbe wie jeder clientseitige Routenwechsel.
Code in Nuxt
<script setup lang="ts">
type Article = { title: string; summary: string }
const { data: article, error } = await useFetch<Article>(
'https://cms.example.com/api/article',
{ cache: 'no-store' },
)
if (error.value) {
throw createError({
statusCode: error.value.statusCode === 404 ? 404 : 502,
statusMessage: 'Der Inhalt konnte nicht geladen werden.',
})
}
if (!article.value) throw createError({ statusCode: 404 })
</script>
<template>
<article v-if="article">
<h1>{{ article.title }}</h1>
<p>{{ article.summary }}</p>
</article>
</template>Eine serverseitige load-Funktion lädt den Inhalt. Die benachbarte Svelte-Seite erhält die Daten über ihre PageData und übernimmt die Darstellung.
Passt zu Svelte-Projekten, die Datenladen, Formularaktionen und Seitenansichten mit den Routenkonventionen von SvelteKit verbinden möchten.
Die Trennung zwischen serverseitigem und universellem Laden sowie der Deployment-Adapter müssen zu den Anforderungen passen.
Code in SvelteKit
import { error } from '@sveltejs/kit'
import type { PageServerLoad } from './$types'
type Article = { title: string; summary: string }
export const load: PageServerLoad = async ({ fetch }) => {
const response = await fetch('https://cms.example.com/api/article', {
cache: 'no-store',
})
if (response.status === 404) error(404, 'Inhalt nicht gefunden.')
if (!response.ok) error(502, 'Der Inhalt konnte nicht geladen werden.')
const article: Article = await response.json()
return { article }
}<script lang="ts">
import type { PageData } from './$types'
let { data }: { data: PageData } = $props()
</script>
<article>
<h1>{data.article.title}</h1>
<p>{data.article.summary}</p>
</article>Rahmen des Beispiels
Die Beispiele erwarten eine öffentliche CMS-Schnittstelle mit JSON-Feldern title und summary oder HTTP 404. cms.example.com ist eine Platzhalteradresse, die Sie beim Übernehmen durch Ihren Endpunkt ersetzen. Gezeigt wird ein neuer serverseitiger Seitenaufruf ohne vorgeschalteten CMS-Cache oder Prerendering.
03 / Vorgehen
So arbeiten wir mit Nuxt
-
Nuxt 3 Setup und Konfiguration
-
Routing-Strategie (File-based oder Custom)
-
Server-Side Rendering Setup
-
Content-Integration (CMS, Markdown)
-
Performance-Optimierung
-
Deployment (Static oder SSR)
Das liefern wir bei Nuxt
- Nuxt 3 Anwendung
- SSR/SSG Konfiguration
- Content-Integration
- SEO-Optimierungen
- Deployment-Setup
Häufige Fragen zu Nuxt
Wann brauche ich SSR und wann reicht SSG?
Welche Headless CMS empfehlen Sie für Nuxt?
Wie aufwändig ist ein Nuxt-Hosting?
Kann ich eine bestehende Vue-App zu Nuxt migrieren?
Artikel zu Nuxt
- Technologie
2 min LesezeitWordPress-Relaunch: Bestehendes verbessern oder Headless umbauen?
Wie Agenturen vor einer Migration Redaktion, Funktionen, Suchadressen und Betriebsaufwand prüfen können.
- Technologie
3 min LesezeitKI in Webprojekten: Aufgabe, Daten und Grenzen zuerst klären
Wie sich KI-Funktionen nachvollziehbar planen, begrenzen und prüfen lassen, bevor sie Teil eines Kundenprojekts werden.
- Technologie
2 min LesezeitCMS auswählen: WordPress, Sanity, Strapi oder Contentful?
Redaktion, Datenmodell, Schnittstellen und Betriebsverantwortung als Grundlage für die CMS-Auswahl.
- Technologie
6 min LesezeitNext.js vs. Nuxt vs. SvelteKit: Welches Framework passt zum Projekt?
Ein Inhalt vom CMS bis zum Seitenaufruf: Next.js, Nuxt und SvelteKit im Vergleich. Mit gemeinsamem Praxisbeispiel und einer Einordnung von Datenfluss, Caching und Übergabe.
Passende Leistungen
Nuxt für Ihr Projekt?
Beschreiben Sie uns Ihre Anforderungen. Wir besprechen, wie die Technologie in Ihr Projekt und Ihre vorhandene Infrastruktur passt.
Projekt besprechen