{{ name }}
{{ price.toFixed(2) }} €
Diese Seite wird über das dateibasierte Routing gefunden.
{{ price.toFixed(2) }} €
Produkt wird geladen …
Das Produkt konnte nicht geladen werden.
{{ product.description }}
{{ product.price.toFixed(2) }} €{{ Math.random() }}
``` Der Server und der Browser erzeugen unterschiedliche Zahlen. Besser ist ein kontrollierter, stabiler Wert oder eine bewusst erst im Browser erzeugte Anzeige. ### Datenabrufe doppelt verstehen Nicht jeder API-Aufruf sollte mit `useFetch` umgesetzt werden. Für initiale Seitendaten ist `useFetch` meist passend, für eine Aktion nach einem Button-Klick häufig `$fetch`. ### Secrets im Browser Private Schlüssel und Passwörter gehören nicht in Komponenten und nicht in `runtimeConfig.public`. Browser-Code ist für den Benutzer sichtbar. ### Server-Routen sind keine automatische Geschäftslogik Eine Datei unter `server/api/` ist zunächst nur ein Endpunkt. Validierung, Fehlerbehandlung, Berechtigungsprüfung, Logging und Datenbanktransaktionen müssen trotzdem sorgfältig implementiert werden. ### Caching und veraltete Daten SSR, statische Generierung und Caching können zu sehr schnellen Seiten führen. Gleichzeitig muss geklärt werden: - Wie lange darf eine Antwort gecacht werden? - Wann muss eine Seite neu erzeugt werden? - Wie werden Änderungen sichtbar? - Welche Daten sind benutzerspezifisch und dürfen niemals gemeinsam gecacht werden? Besonders bei Login-Daten und persönlichen Inhalten darf kein versehentliches Server-Caching stattfinden. ### Nuxt-Konventionen lernen Nuxt reduziert eigenen Architekturcode, führt aber eigene Konzepte ein. Am Anfang müssen unter anderem folgende Fragen beantwortet werden: - Wann verwende ich `useFetch`? - Wann läuft Code auf dem Server? - Wie funktionieren Layouts und Middleware? - Wo gehört ein Plugin hin? - Wann brauche ich eine Server-Route? Diese Lernkurve ist der Preis für die produktive Struktur, die Nuxt bereitstellt. --- ## Deployment und Betrieb Nuxt wird normalerweise zunächst gebaut: ```bash npm run build ``` Danach wird das erzeugte Ergebnis entsprechend der Zielumgebung gestartet. Bei einem Node-Deployment ist das Prinzip typischerweise: ```bash node .output/server/index.mjs ``` Die konkrete Bereitstellung kann beispielsweise erfolgen über: - eigenen Linux-Server - Docker - Kubernetes - Plattformen mit Node-Unterstützung - serverlose Plattformen - statisches Hosting bei einer vollständig statisch generierten Website ### Betriebspunkte Für eine produktive Anwendung sollten unter anderem berücksichtigt werden: - Umgebungsvariablen - HTTPS - Logging - Monitoring - Fehlerseiten - Performance und Caching - Datenbankverbindungen - Rate Limiting bei APIs - Sicherheitsupdates der Abhängigkeiten - Build- und Deployment-Pipeline Nuxt vereinfacht den Build, nimmt aber nicht die Verantwortung für einen sicheren und stabilen Betrieb ab. --- ## Wann ist Nuxt eine gute Wahl? Nuxt ist häufig eine gute Wahl, wenn: - Vue bereits verwendet wird oder im Team bekannt ist - mehrere Seiten und ein echtes Routing benötigt werden - SEO und initiale Ladezeit wichtig sind - SSR, SSG oder hybride Strategien gebraucht werden - Frontend und kleinere Server-Funktionen zusammengehören - eine konventionelle, gut erkennbare Projektstruktur hilfreich ist - eine interaktive Webanwendung entstehen soll ### Wann reicht Vue mit Vite? Vue mit Vite kann ausreichen, wenn: - die Anwendung nur aus einem kleinen interaktiven Bereich besteht - SSR nicht erforderlich ist - SEO keine Rolle spielt - die Architektur vollständig selbst festgelegt werden soll - bereits ein separates Frontend-Setup vorhanden ist ### Wann ist ein separates Backend sinnvoll? Ein eigenes Backend ist oft sinnvoll, wenn: - komplexe Geschäftslogik zentral für mehrere Clients benötigt wird - neben der Website auch mobile Apps auf dieselbe API zugreifen - umfangreiche Hintergrundverarbeitung erforderlich ist - Datenbankzugriffe und Berechtigungen zentral gebündelt werden sollen - ein vorhandenes Backend weiterverwendet wird Nuxt kann in diesem Fall weiterhin das Frontend und gegebenenfalls eine dünne Backend-for-Frontend-Schicht bereitstellen. --- ## Zusammenfassung Nuxt ist ein Meta-Framework für Vue. Es verbindet Vue-Komponenten mit den Funktionen, die man beim Bau einer vollständigen Webanwendung benötigt: - dateibasiertes Routing - Layouts und Middleware - Server-Side Rendering - Static Site Generation - hybrides Rendering - Datenabrufe - SEO-Unterstützung - Server-API-Routen - Build und Deployment Der typische Denkansatz ist: ```text Vue → Wie baue ich die Benutzeroberfläche? Nuxt → Wie baue und betreibe ich die gesamte Webanwendung? Nitro → Wie läuft die Server-Seite? Vite → Wie entwickle und baue ich das Projekt? TypeScript→ Wie mache ich den Code sicherer und wartbarer? ``` Nuxt löst viele wiederkehrende Architekturprobleme, bringt dafür aber eigene Konzepte und eine Server-/Client-Komplexität mit. Wer Vue-Grundlagen beherrscht und versteht, wo Code ausgeführt wird, kann mit Nuxt sowohl klassische Websites als auch umfangreiche interaktive Anwendungen entwickeln. ### Empfohlener Lernweg 1. JavaScript- und TypeScript-Grundlagen lernen. 2. Vue-Komponenten, Templates und Reaktivität verstehen. 3. Eine kleine Vue-Anwendung bauen. 4. Ein Nuxt-Projekt mit `pages/` und `components/` erstellen. 5. Navigation und dynamische Routen ergänzen. 6. Daten mit `useFetch` laden. 7. Eine eigene `server/api/`-Route schreiben. 8. SSR, SSG und Hydration vergleichen. 9. Authentifizierung und serverseitige Berechtigungen ergänzen. 10. Die Anwendung bauen, deployen und beobachten. Der wichtigste praktische Lernschritt ist, eine kleine Anwendung vollständig umzusetzen: zum Beispiel eine Produktliste mit Detailseiten, Loading- und Fehlerzuständen, einer Server-Route und einer geschützten Admin-Seite.