SSR, hydratation et les conventions Nuxt
Le rendu universel (la feature qui justifie tout)
Une SPA classique envoie un HTML vide + 2 Mo de JS : blanc à l'écran, invisible pour les crawlers. Nuxt fait du SSR universel :
1. requĂȘte â le SERVEUR exĂ©cute les composants Vue â HTML complet renvoyĂ©
(l'utilisateur voit la page immédiatement, le SEO voit tout)
2. le navigateur charge le JS â HYDRATATION : Vue « s'attache » au HTML existant,
branche rĂ©activitĂ© et listeners â la page devient interactive
3. navigations suivantes : cĂŽtĂ© client (SPA) â plus de rechargement
Le concept Ă vraiment comprendre est l'hydratation : le composant s'exĂ©cute deux fois (serveur puis client), et le HTML des deux exĂ©cutions doit coĂŻncider â sinon « hydration mismatch ». Corollaires : pas de window au setup (il n'existe pas sur le serveur â c'est le import.meta.client et le onMounted qu'on utilise partout sur cette plateforme), et pas de valeurs diffĂ©rentes entre les deux passes (l'heure, l'alĂ©atoire).
Les conventions : la structure EST la configuration
Nuxt remplace la configuration par des dossiers signifiants :
pages/â le routing :pages/cours/[course]/[...lesson].vue= la route dynamique + catch-all (celle de cette plateforme !) ;components/â auto-importĂ©s (avec le piĂšge dupathPrefixqu'on a payĂ© :ui/atoms/UiButton.vuedevientUiAtomsUiButtonsauf config) ;composables/etutils/â auto-importĂ©s aussi âuseProgress()s'utilise sans import ;server/â le backend Nitro (leçon 3) ;middleware/,layouts/,plugins/â chacun son rĂŽle.
Le contrat : tu suis la convention, Nuxt fait la plomberie (code-splitting par page, préchargement, imports). Tu la refuses, tu te bats contre le framework.
L'hydratation, c'estâŠ