CHARBON

Nuxt.js : Guide Complet

Nuxt.js : Guide Complet
← Retour

Publié le Sat Jan 17 2026 00:00:00 GMT+0000 (Coordinated Universal Time) par Diane

Nuxt.js : Le Framework Vue.js Production-Ready

Tu aimes Vue.js mais tu veux un framework qui gère tout comme Next.js le fait pour React ? Nuxt.js est fait pour toi.

C’est quoi Nuxt.js ?

Nuxt.js est un framework Vue.js qui gère routing, SSR, SSG, API routes, et tout ce qu’il faut pour une app en production.

Pourquoi Nuxt.js ?

  • Vue ecosystem : Si tu connais Vue, c’est naturel
  • Convention over configuration : Zéro configuration
  • SEO : Server-side rendering intégré
  • Modules : Écosystème de 100+ modules

Réalité : Nuxt.js à Vue.js, c’est comme Next.js à React. Le standard pour les apps Vue en production.

Les 3 avantages clés

1. Routing automatique

Pas de configuration. Crée un fichier, c’est une route.

pages/
├── index.vue          → /
├── about.vue          → /about
├── blog/
│   ├── index.vue      → /blog
│   └── [slug].vue     → /blog/mon-article
└── api/
    └── users.vue     → /api/users

Avantages :

  • Dynamic routes ([slug].vue, [id].vue)
  • Nested routes (layouts)
  • Middleware pour auth et redirections

2. Server-Side Rendering (SSR)

Le serveur envoie du HTML prêt, pas du JavaScript vide.

<script setup>
const { data: posts } = await useFetch("/api/posts");
</script>

<template>
  <div>
    <h1>Blog</h1>
    <div v-for="post in posts" :key="post.id">
      <h2>{{ post.title }}</h2>
    </div>
  </div>
</template>

Avantages :

  • SEO parfait
  • Premier chargement ultra-rapide
  • Hydration automatique

3. Modules puissants

Des modules pour tout.

ModuleUsage
@nuxtjs/tailwindcssTailwind CSS
@nuxtjs/supabaseSupabase (auth, db)
@pinia/nuxtState management
@nuxtjs/strapiHeadless CMS
@nuxt/imageImage optimization

Quand utiliser Nuxt.js ?

✅ Parfait pour

  • Applications web (SaaS, CRM)
  • E-commerce avec inventory dynamique
  • Sites avec authentification
  • Apps qui utilisent déjà Vue.js
  • Sites hybrides (statique + dynamique)

❌ Pas pour

  • Blogs simples (Astro est mieux)
  • Landing pages statiques (Carrd est mieux)
  • Applications React (Next.js est mieux)

Alternative : Next.js pour React, Astro pour statique, Nuxt.js pour Vue.

Comment démarrer

Installation

npx nuxi@latest init mon-app

Questions :

  1. Package manager ? → npm/yarn/pnpm
  2. UI framework ? → None/Vuetify/Element Plus
  3. TypeScript ? → Yes (recommandé)
  4. Git init ? → Yes

Structure de projet

my-nuxt-app/
├── nuxt.config.ts    # Configuration
├── pages/            # Routes automatiques
├── components/       # Composants
├── layouts/          # Layouts
├── server/           # Server routes
├── public/           # Assets statiques
└── middleware/       # Middleware

Créer une page

<template>
  <div>
    <h1>Bienvenue sur Nuxt.js</h1>
    <p>C'est une app Vue en production.</p>
  </div>
</template>

<script setup>
// Composition API
useHead({
  title: "Mon App Nuxt",
  meta: [{ name: "description", content: "Mon super app" }],
});
</script>

Fonctionnalités essentielles

1. Data fetching

<script setup>
// useFetch (composable, reactive)
const { data, error, pending } = await useFetch("/api/posts");

// useAsyncData (avec clé custom)
const { data } = await useAsyncData("posts", () => $fetch("/api/posts"));

// $fetch (server-side)
const posts = await $fetch("/api/posts");
</script>

2. API Routes

// server/api/hello.get.ts export default defineEventHandler(() => { return {
message: 'Hello from Nuxt API!' } }) // Avec params //
server/api/users/[id].get.ts export default defineEventHandler(event => { const
id = getRouterParam(event, 'id') return { userId: id } })

3. Server Middleware

// middleware/auth.ts
export default defineNuxtRouteMiddleware((to) => {
  const token = useCookie("token");
  if (!token.value) {
    return navigateTo("/login");
  }
});

4. Image optimization

<script setup>
// nuxt.config.ts
modules: ["@nuxt/image"];
</script>

<template>
  <NuxtImg src="/hero.webp" alt="Hero" width="800" format="webp" />
</template>

Hébergement et déploiement

Meilleures options

PlateformePrixAvantages
Vercel0-20€/moisZero config, CI/CD
Netlify0-20€/moisFunctions, edge
Cloudflare0-20€/moisEdge, cache
Railway5-50€/moisFull stack

Générer statique :

npm run generate
# Le dossier 'output' est prêt pour le déploiement

Comparaison Nuxt.js vs Vue.js

CritèreNuxt.jsVue.js (Vite)
RoutingAutomatiqueVue Router (manuel)
SSRIntégréÀ configurer
SEOSSR → ⭐⭐⭐⭐⭐SPA → ⭐⭐
API routesIntégréExpress/Fastify (externe)
BuildNitro (rapide)Vite (rapide)
Image optim@nuxt/imageManuelle
State managementPinia (intégré)Pinia (manuel)

Conclusion : En 2026, si tu fais une app avec Vue.js, prends Nuxt.js.

Les 5 erreurs à éviter

1. Utiliser Nuxt pour un blog simple

Tu veux un blog ? Prends Astro ou Ghost.

Pourquoi ? Nuxt est overkill pour du contenu. Astro est plus simple et plus rapide.

2. Ignorer la composition API

<!-- ❌ Mauvais : Options API -->
<script>
export default {
  data() {
    return { count: 0 };
  },
};
</script>

<!-- ✅ Bon : Composition API -->
<script setup>
const count = ref(0);
</script>

3. Tout mettre dans SSR

<!-- ❌ Mauvais : SSR pour du contenu statique -->
<script setup>
const data = await useFetch("/static-data");
</script>

<!-- ✅ Bon : Hybride (SSG + SSR) -->
<script setup>
const { data } = await useAsyncData(
  "static",
  () => $fetch("/static-data"),
  { server: false }, // Client-side only
);
</script>

4. Négliger le cache

Nuxt a un cache puissant. Utilise-le.

// nuxt.config.ts
routeRules: {
  '/': { isr: 60 },      // ISR : 60 secondes
  '/blog': { isr: 3600 }, // ISR : 1 heure
  '/static/**': { isr: true } // Cache infini
}

5. Ignorer le SEO

“Nuxt gère le SEO” → Oui, mais pas automatiquement.

<script setup>
useHead({
  title: "Mon Page",
  meta: [
    { name: "description", content: "Description..." },
    { property: "og:title", content: "Mon Page" },
    { property: "og:image", content: "/image.jpg" },
  ],
});
</script>

Outils populaires

OutilUsage
PiniaState management
SupabaseBackend as a service (auth, db)
PrismaORM pour database
StrapiHeadless CMS
Nuxt ImageImage optimization
Nuxt ContentContent collections

Plan d’action : 1 semaine

Jour 1 : Installation

  • Installer Nuxt.js (npx nuxi@latest init)
  • Explorer la structure du projet
  • Créer une première page

Jour 2 : Comprendre le routing

  • Apprendre le système de routes
  • Créer des routes dynamiques
  • Utiliser les layouts

Jour 3 : Data fetching

  • Apprendre useFetch et useAsyncData
  • Comprendre SSR vs CSR
  • Créer des API routes

Jour 4 : Composables

  • Comprendre les composables Nuxt
  • Créer tes propres composables
  • Utiliser Pinia pour le state

Jour 5 : Optimisation

  • Optimiser les images (@nuxt/image)
  • Configurer le cache (routeRules)
  • Améliorer les Core Web Vitals

Jour 6 : Modules

  • Installer Tailwind CSS
  • Intégrer Supabase (auth, db)
  • Utiliser @nuxt/content

Jour 7 : Déploiement

  • Créer un compte Vercel/Netlify
  • Connecter ton repo GitHub
  • Lancer ton app en production

En savoir plus

  • Next.js - Alternative framework React
  • Astro - Alternative pour sites statiques
  • Vue.js - Framework Vue.js
  • WordPress - Alternative CMS traditionnel

Nuxt.js n’est pas pour tout le monde. Mais si tu fais une app avec Vue.js en production, c’est le meilleur choix en 2026. SSR, SSG, API routes, tout est là. Pas de configuration, juste du code Vue.

Écrit par Diane

← Retour

Publications Récentes