Programmation web

Tuto React.js Next.js Débutant : Guide Front-End Moderne

Maîtrisez React.js et Next.js (App Router). Apprenez le SSR, SSG et les Server Components avec ce guide pratique pour créer des apps web modernes.

9 min de lecture 27 avr. 2026 1 889 mots

Beaucoup de développeurs se tournent vers React.js et Next.js pour créer des applications modernes et performantes. Ces outils offrent une approche efficace pour construire des interfaces utilisateur dynamiques tout en assurant une excellente expérience grâce à des stratégies de rendu adaptées au contenu (SSR, SSG, Server Components).

React.js est une bibliothèque JavaScript largement adoptée pour construire des interfaces modulaires basées sur des composants réutilisables. Next.js est un framework construit sur React qui facilite le rendu côté serveur, la génération statique et l'optimisation automatique des ressources afin d'améliorer les performances et le référencement.

Ce tutoriel vous guidera à travers l'installation de Next.js, la création de votre première application front-end, l'utilisation de l'App Router (modèle moderne) et les meilleures pratiques pour optimiser le rendu et le SEO. À la fin, vous pourrez créer des projets concrets comme des blogs ou des tableaux de bord en temps réel.

Introduction à React.js et Next.js

Présentation des technologies

React.js facilite la création d'interfaces utilisateur réactives et modulaires. Next.js ajoute des outils pour le rendu côté serveur, la génération statique, le routage structuré et des optimisations automatiques (images, fonts, bundles).

  • React.js : bibliothèque pour créer des interfaces utilisateur
  • Next.js : framework pour des applications React performantes
  • Rendu côté serveur (SSR) et génération statique (SSG)
  • Server Components (dans l'App Router) pour décharger le client

Exemple simple (Server Component dans l'App Router) :

export default function Page() {
  // Server Component (par défaut dans app/ de Next.js)
  return (
    
  );
}

Ce composant est rendu côté serveur par défaut lorsqu'il est placé dans le dossier app/ (App Router).

Installation et Configuration de l'environnement

Pré-requis et installation

Avant de commencer, installez Node.js (version LTS recommandée) et un gestionnaire de paquets (npm ou yarn). Pour initialiser un nouveau projet Next.js, utilisez la commande officielle suivante :

npx create-next-app@latest mon-projet-next

Cette commande initialise un projet Next.js moderne. Vous pouvez opter pour l'App Router lors de l'initialisation ou créer manuellement le dossier app/ si vous migrez un projet existant.

  • Installer Node.js (version LTS recommandée)
  • Utiliser npx create-next-app@latest pour démarrer un projet
  • Comprendre la structure de base du projet (voir la section suivante)

Arborescence d'un projet Next.js

Voici une arborescence standard pour un projet qui utilise l'App Router, accompagnée d'une brève explication des dossiers importants :

mon-projet-next/
  package.json
  next.config.js
  /app
    layout.js            # Layout racine (persistance d'état, providers)
    page.js              # Page index (/)
    /posts
      [id]/page.js       # Route dynamique /posts/:id
  /components
    Header.js
    Footer.js
  /public
    /images
  /styles
    globals.css

Rôles :

  • /app : structure des routes avec Server Components par défaut, layouts imbriqués et pages.
  • /components : composants réutilisables (client ou server components selon la directive).
  • /public : fichiers statiques accessibles publiquement (images, robots.txt, favicon).
  • layout.js : fichier clé pour définir le wrapper global (header, footer, providers) — il permet la persistance d'éléments et évite les remounts inutiles entre navigations.

Exemple minimal de app/layout.js (Server Component) :

export default function RootLayout({ children }) {
  return (
    <html lang="fr">
      <body>
        <Header />
        {children}
        <Footer />
      </body>
    </html>
  );
}

Si un composant nécessite un état côté client (ex: menu interactif), marquez-le avec "use client" et importez-le dans le layout. Le layout lui-même reste le point de persistance entre pages.

Création de votre Première Application React

Développer votre application

Après l'initialisation, accédez au dossier du projet et démarrez le serveur de développement :

cd mon-projet-next
npm run dev

Par défaut, Next.js lance le serveur sur http://localhost:3000. Dans l'App Router, la structure des pages se trouve dans le dossier app/ (par exemple app/page.js pour la page racine).

Exemple de Client Component (nécessite la directive "use client") :

"use client";
import { useState, useEffect } from "react";

export default function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    console.log("Counter mounted");
  }, []);

  return (
    <button onClick={() => setCount(c => c + 1)}>
      Compteur : {count}
    </button>
  );
}

Les Server Components permettent d'exécuter du code (accès aux secrets serveurs, appels API sécurisés) sans embarquer la logique côté client, réduisant ainsi la taille des bundles.

App Router vs Pages Router

Quelle approche choisir ?

Next.js propose deux approches de routage : le Pages Router (ancien) et l'App Router (modèle moderne avec Server Components et layouts imbriqués).

Points clés :

  • App Router (dossier app/) : Server Components par défaut, layouts imbriqués et modèle de rendu flexible.
  • Pages Router (dossier pages/) : API familière (getStaticProps/getServerSideProps), toujours supportée pour les projets existants mais moins axée sur les Server Components.

Exemple de récupération de données dans l'App Router (Server Component) :

export default async function Page() {
  // Fetch côté serveur avec revalidation (ISR)
  const res = await fetch("https://api.example.com/data", { next: { revalidate: 60 } });
  const data = await res.json();

  return (
    <main>
      
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </main>
  );
}

Si vous maintenez un code existant basé sur pages/, continuez à l'utiliser si nécessaire ; pour de nouveaux projets, le modèle d'App Router simplifie l'usage des Server Components et des layouts imbriqués.

Routage et routes dynamiques

Les fondamentaux

Dans l'App Router, les routes dynamiques s'expriment via des segments entre crochets dans app/ : par exemple app/posts/[id]/page.js crée la route /posts/:id.

// app/posts/[id]/page.js
export default function PostPage({ params }) {
  return (
    
  );
}

Ce modèle est modulaire et s'intègre naturellement avec les Server Components et les layouts partagés (ex : partager une barre latérale entre toutes les pages d'un dossier).

SSR vs SSG

Comparaison visuelle du flux de données et des moments de rendu entre SSR et SSG :

Comparaison SSR vs SSG Diagramme comparatif détaillant les processus du Server-Side Rendering (SSR) et du Static Site Generation (SSG), incluant les étapes de rendu, de livraison et les cas d'usage. SSR (Rendu côté serveur) 1. Requête client vers serveur 2. Serveur exécute rendu React 3. Serveur renvoie HTML pré-rendu 4. Hydratation côté client Cas d'usage : Contenu dynamique, Authentification, Pages personnalisées SSG (Génération statique) 1. Build time (pré-rendu) 2. Pages HTML stockées sur CDN 3. Client reçoit HTML immédiatement 4. Hydratation optionnelle Cas d'usage : Blogs, Pages marketing, Documentation Temps de réponse initial Recalcul par requête Servi instantanément via CDN Vitesse de réponse : SSR (Variable) SSG (Ultra-rapide)
Comparaison des flux de rendu : le SSR génère le HTML à la demande pour chaque utilisateur, tandis que le SSG pré-génère tout le contenu lors de la phase de build pour une performance maximale.

Optimisation des Performances et SEO

Techniques d'optimisation

Optimiser le rendu et le SEO passe par le choix du bon mode de rendu (SSR/SSG/ISR), la réduction des bundles (Server Components), et l'utilisation d'outils intégrés comme next/image pour optimiser les images.

  • Choisir SSR pour le contenu très dynamique
  • Privilégier SSG/ISR pour les contenus principalement statiques
  • Réduire le JavaScript envoyé au client avec Server Components
  • Utiliser next/image et next/font pour des optimisations automatiques

Exemple (Pages Router) — getStaticProps :

export async function getStaticProps() {
  const res = await fetch("https://api.example.com/data");
  const data = await res.json();
  return { props: { data } };
}

Exemple (App Router) — fetch dans un Server Component (préféré pour les nouvelles applications) :

export default async function Page() {
  // fetch côté serveur avec revalidation (ISR)
  const res = await fetch("https://api.example.com/data", { next: { revalidate: 60 } });
  const data = await res.json();

  return (
    <div>
      <h2>Données pré-rendues</h2>
      <pre>{JSON.stringify(data, null, 2)}</pre>
    </div>
  );
}

Conseils de sécurité et déploiement :

  • Ne mettez jamais de secrets (API keys) côté client — conservez-les dans les variables d'environnement côté serveur.
  • Activez les en-têtes de sécurité (CSP, HSTS) via la configuration de votre hébergeur ou un reverse proxy.
  • Surveillez la taille des bundles et utilisez le code splitting et le lazy loading pour les bibliothèques lourdes.

Ressources et Communauté pour Allers Plus Loin

Explorer les ressources officielles

Consultez la documentation officielle pour rester à jour :

Communautés utiles :

  • Stack Overflow — stackoverflow.com
  • Reddit et autres forums de développeurs
  • Groupes Discord/Slack spécialisés (recherchez des serveurs maintenus par la communauté React/Next)

Points Clés à Retenir

  • L'App Router introduit les Server Components et les layouts imbriqués, utiles pour organiser les gros projets et réduire le JavaScript client.
  • SSR améliore le rendu initial pour du contenu dynamique ; SSG offre un temps de réponse initial minimal pour du contenu statique.
  • Limitez le JavaScript côté client en utilisant des Server Components lorsque possible.
  • Optimisez les ressources médias avec next/image et utilisez la revalidation pour l'ISR (Incremental Static Regeneration).

Questions Fréquentes

Comment déployer une application Next.js ?
Vercel est la plateforme recommandée par les créateurs de Next.js pour un déploiement sans configuration manuelle. Vous pouvez aussi déployer sur des fournisseurs cloud (AWS, DigitalOcean, Azure) ou via des conteneurs, mais cela demandera davantage de configuration (serveur, reverse proxy, variables d'environnement, build step). Assurez-vous d'exécuter next build pour préparer l'application à la production.
Quelle est la différence entre SSR et SSG dans Next.js ?
SSR (Server-Side Rendering) génère les pages à la demande à chaque requête, adapté au contenu personnalisé. SSG (Static Site Generation) pré-rend les pages au moment de la construction et sert des fichiers statiques depuis un CDN, adapté aux contenus stables. L'ISR permet de combiner les deux en régénérant les pages périodiquement.
Comment gérer l'état global dans une application React ?
Pour l'état global, utilisez Context API pour des cas simples ou Redux / Zustand / Recoil pour des besoins plus avancés. Choisissez selon la complexité, la nécessité du debug (Redux DevTools) et les préférences d'équipe.
Que fait layout.js et pourquoi est-il important ?
layout.js définit le wrapper partagé (header, footer, providers). Il persiste entre navigations dans l'App Router, évitant les remounts inutiles et permettant de conserver l'état et les providers (par ex. un contexte d'authentification) sans réinitialisation.

Conclusion

Maîtriser React.js et Next.js (et en particulier l'App Router et les Server Components) vous permet de concevoir des applications performantes et maintenables. Construisez des projets concrets pour valider ces concepts : blog statique avec SSG, tableau de bord en SSR/ISR, ou application hybride tirant parti des Server Components pour réduire l'empreinte client.