1. Livres & vidéos
  2. Next.js pour les développeurs React
  3. Prise en main de Next.js
Extrait - Next.js pour les développeurs React Le guide complet pour des applications web professionnelles
Extraits du livre
Next.js pour les développeurs React Le guide complet pour des applications web professionnelles Revenir à la page d'achat du livre

Prise en main de Next.js

Préparer l’environnement de développement

Prérequis techniques

Avant de démarrer un projet avec Next.js, il est essentiel de s’assurer que l’environnement de développement local est correctement configuré. La première condition concerne l’installation de Node.js : une version 18 ou supérieure est recommandée afin de bénéficier d’une compatibilité optimale avec les dernières fonctionnalités proposées par le framework.

Un gestionnaire de paquets comme npm, pnpm ou yarn est également nécessaire pour installer les dépendances du projet et exécuter les différents scripts de développement. L’usage de ces outils est aujourd’hui incontournable dans tout projet JavaScript moderne.

L’éditeur de code joue aussi un rôle central. Visual Studio Code (VS Code) est particulièrement adapté : il offre une prise en charge native du couple TypeScript + JSX, dispose de nombreuses extensions utiles pour Next.js, et permet de coder efficacement dans un environnement fluide et personnalisable.

Enfin, même s’il n’est pas obligatoire, l’usage de Git est vivement conseillé. Il permet de versionner le code, de collaborer avec d’autres développeurs de manière structurée et de préparer le projet...

Créer un nouveau projet Next.js

1. Initialisation avec create-next-app

La méthode la plus simple et recommandée pour démarrer un projet Next.js consiste à utiliser l’outil officiel create-next-app. Cet utilitaire automatise l’installation des dépendances et la configuration initiale du projet.

Pour créer un nouveau projet, il suffit d’exécuter la commande suivante dans le terminal :

npx create-next-app@latest mon-projet 

Une fois lancée, la commande déclenche une série de questions interactives permettant de personnaliser le projet. Voici les choix recommandés dans le cadre de ce livre :

  • TypeScript : oui - pour bénéficier du typage statique dès le départ.

  • App Router : oui - indispensable, car ce livre s’appuie sur le dossier app/.

  • Tailwind CSS : au choix - un outil pratique pour styliser rapidement les interfaces. 

  • Alias @/ : oui - permet de simplifier les imports depuis la racine du projet.

  • ESLint : oui - pour renforcer la qualité du code dès les premières lignes.

  • Src directory : non - ce livre n’utilise pas de structure src/.

  • App directory : oui - indispensable pour activer le système de routing moderne de Next.js.

Une fois la configuration terminée, le projet est prêt à être utilisé.

2. Lancer le serveur de développement...

Explorer la structure du projet

1. Arborescence générée

Une fois le projet généré avec create-next-app, une structure de dossiers claire et modulaire est mise en place par défaut. Cette organisation favorise une séparation des responsabilités et une montée en complexité progressive.

L’arborescence initiale se présente ainsi :

mon-projet/ 
├── app/                 # Contient les routes et les composants 
│   └── page.tsx         # Page d'accueil (route "/") 
├── public/              # Fichiers statiques 
├── styles/              # Fichiers CSS globaux ou Tailwind 
├── tsconfig.json        # Configuration TypeScript 
├── next.config.js       # Configuration spécifique à Next.js 
├── package.json         # Scripts, dépendances et métadonnées 
└── ...                  # Autres fichiers générés 

Chaque dossier a un rôle bien défini. Le dossier app/ constitue le cœur du système de routage basé sur la structure des fichiers, tandis que public/ permet l’hébergement de ressources statiques accessibles directement. Cette structure de départ est pensée pour accompagner aussi bien les prototypes rapides que les applications complexes et professionnelles.

2. Convention plutôt que configuration

Next.js repose sur une philosophie simple mais puissante : la convention plutôt que la configuration. Autrement dit, le framework préfère définir des règles claires et cohérentes plutôt que de laisser chaque projet réinventer sa propre organisation. Ce choix structure le développement dès...

Comprendre l’App Router

Le dossier app/ constitue la pièce maîtresse de l’architecture Next.js depuis la version 13. Il active automatiquement le nouveau système de routage (dit App Router) qui remplace progressivement l’ancien Pages Router basé sur le dossier pages/.

Dans cette approche, chaque sous-dossier de app/ correspond à une route. Cette structure hiérarchique permet d’organiser l’application en segments clairs et réutilisables.

1. Principe général du routage par fichiers

Chaque segment de route est représenté par un dossier dans app/. Par exemple :

  • app/page.tsx -> page d’accueil / ;

  • app/contact/page.tsx -> page /contact ;

  • app/blog/[slug]/page.tsx -> page dynamique /blog/mon-article

Le nom du dossier reflète l’URL finale, y compris pour les routes dynamiques ou facultatives.

Le dossier app/ contient la logique du site, basée sur React et le système de routing de Next.js.

Chaque dossier dans app/ devient une route (’app/contact/page.tsx’ -> ’/contact’).

Il gère :

  • les pages ;

  • les layouts ;

  • les erreurs (’error.tsx’) ;

  • les chargements (’loading.tsx’) ;

  • les routes API (’route.ts’).

Tous les fichiers de app/ sont transpilés, rendus et optimisés par Next.js.

Le dossier app/ contient surtout des routes, layouts et composants de page, qu’ils soient statiques ou non. Cependant, il ne doit pas contenir d’actifs statiques comme des images, polices… : pour cela, utilisez public/.

2. Fichiers spéciaux à connaître

Une route peut contenir plusieurs fichiers réservés par Next.js :

Fichier

Rôle

page.tsx

Composant principal de la page (équivalent d’un composant Route)

layout.tsx...

L’architecture server et client components

1. Une évolution majeure du modèle React

Avec la sortie de Next.js 13, l’App Router introduit un changement fondamental dans la façon de concevoir les composants React au sein d’une application : la séparation explicite entre server components et client components. Ce modèle repose sur une avancée de React 18 : les React Server Components (RSC), qui permettent de déporter par défaut l’exécution du rendu côté serveur.

L’objectif est double : réduire drastiquement la charge JavaScript côté navigateur et améliorer les performances globales de l’application, notamment via le streaming progressif des pages. Contrairement à une Single Page Application (SPA) classique, où tous les composants sont chargés et évalués dans le navigateur, une application Next.js moderne exécute la majorité de son interface sur le serveur, en ne transmettant au client que le strict nécessaire pour l’interaction. 

2. Le paradigme server-first

Avec l’App Router, chaque fichier .tsx est traité par défaut comme un server component, sauf s’il est explicitement marqué comme client. Autrement dit, la logique d’affichage est exécutée côté serveur, puis le résultat HTML est envoyé directement au navigateur.

Ce paradigme inversé (server-first plutôt que client-first) modifie profondément la manière de penser les applications React. Il privilégie la génération du contenu sur le serveur, là où les données et les ressources sensibles sont accessibles, avant de ne transférer au client que le strict nécessaire.

Cette approche présente plusieurs avantages :

  • Moins de JavaScript à charger : le code serveur n’est jamais embarqué dans le bundle du navigateur.

  • Un rendu plus rapide : les données sont injectées dès le premier chargement, sans appels asynchrones supplémentaires.

  • Une sécurité renforcée : les opérations sensibles (accès aux cookies, à la base de données, à l’environnement serveur) restent confinées au back-end.

Dans...

Créer et organiser ses pages

1. Créer une nouvelle page

Dans une application Next.js utilisant l’App Router, chaque sous-dossier du répertoire app/ correspond automatiquement à une route du site. Ainsi, pour ajouter une nouvelle page, il suffit de créer un dossier dédié à cette route et d’y inclure un fichier nommé page.tsx.

Par exemple, pour créer une page "À propos", il convient d’ajouter la structure suivante dans l’arborescence :

app/ 
├── about/ 
│   └── page.tsx 

Le fichier page.tsx contient le composant de la page :

// app/about/page.tsx 
export default function AboutPage() { 
  return ( 
  <main> 
    <h1>À propos</h1> 
    <p>Bienvenue sur notre site !</p> 
  </main> 
  ); 
} 

Cette page est alors immédiatement accessible à l’adresse /about, sans qu’il soit nécessaire de configurer manuellement un système de routage. La structure du répertoire app/ suffit à elle seule à définir l’arborescence des routes du site. Cette approche simplifie considérablement le développement, tout en rendant l’architecture du projet plus lisible et maintenable.

2. Ajouter des composants réutilisables

Dans un projet Next.js, les composants sont de simples fonctions React exportées depuis des fichiers TypeScript. Pour organiser ces composants, il est recommandé de créer un dossier components/ à la racine du projet. Ce répertoire regroupe les éléments d’interface réutilisables, tels que les titres, boutons, formulaires ou cartes.

Par exemple, un composant Titre peut...