Principes fondamentaux du routage

Le squelette de toute application est son système de routage. Cette page vous présentera les concepts fondamentaux du routage web et comment gérer le routage dans Next.js.

Terminologie

Vous rencontrerez ces termes fréquemment dans la documentation. Voici un rapide référence :

Terminologie pour l'arborescence des composants
  • Arbre : Une convention pour visualiser une structure hiérarchique. Par exemple, une arborescence de composants avec des composants parents et enfants, une structure de dossiers, etc.
  • Sous-arbre : Partie d'un arbre, commençant à une nouvelle racine (premier nœud) et se terminant aux feuilles (dernier nœud).
  • Racine : Le premier nœud d'un arbre ou sous-arbre, comme une mise en page racine.
  • Feuille : Nœuds dans un sous-arbre qui n'ont pas d'enfants, comme le dernier segment dans un chemin d'URL.
Terminologie pour l'anatomie d'une URL
  • Segment d'URL : Partie du chemin d'URL délimitée par des barres obliques.
  • Chemin d'URL : Partie de l'URL qui vient après le domaine (composée de segments).

Le routeur app

Dans la version 13, Next.js a introduit un nouveau routeur App basé sur les composants serveur React, qui prend en charge les mises en page partagées, le routage imbriqué, les états de chargement, la gestion des erreurs et plus encore.

Le routeur App fonctionne dans un nouveau répertoire nommé app. Le répertoire app fonctionne conjointement avec le répertoire pages pour permettre une adoption progressive. Cela vous permet d'opter pour le nouveau comportement sur certaines routes de votre application tout en conservant d'autres routes dans le répertoire pages pour le comportement précédent. Si votre application utilise le répertoire pages, consultez également la documentation du routeur Pages.

Bon à savoir : Le routeur App a la priorité sur le routeur Pages. Les routes entre les répertoires ne doivent pas résoudre vers le même chemin d'URL et provoqueront une erreur lors de la compilation pour éviter un conflit.

Répertoire App de Next.js

Par défaut, les composants dans app sont des composants serveur React. Il s'agit d'une optimisation de performance et vous permet de les adopter facilement, et vous pouvez également utiliser des composants client.

Recommandation : Consultez la page Serveur si vous débutez avec les composants serveur.

Rôles des dossiers et fichiers

Next.js utilise un routeur basé sur le système de fichiers où :

  • Les dossiers sont utilisés pour définir les routes. Une route est un chemin unique de dossiers imbriqués, suivant la hiérarchie du système de fichiers depuis le dossier racine jusqu'à un dossier feuille final qui inclut un fichier page.js. Voir Définition des routes.
  • Les fichiers sont utilisés pour créer l'interface utilisateur affichée pour un segment de route. Voir fichiers spéciaux.

Segments de route

Chaque dossier dans une route représente un segment de route. Chaque segment de route est mappé à un segment correspondant dans un chemin d'URL.

Comment les segments de route correspondent aux segments d'URL

Routes imbriquées

Pour créer une route imbriquée, vous pouvez imbriquer des dossiers les uns dans les autres. Par exemple, vous pouvez ajouter une nouvelle route /dashboard/settings en imbriquant deux nouveaux dossiers dans le répertoire app.

La route /dashboard/settings est composée de trois segments :

  • / (Segment racine)
  • dashboard (Segment)
  • settings (Segment feuille)

Conventions de fichiers

Next.js fournit un ensemble de fichiers spéciaux pour créer des interfaces utilisateur avec des comportements spécifiques dans les routes imbriquées :

layoutInterface utilisateur partagée pour un segment et ses enfants
pageInterface utilisateur unique d'une route et rend les routes accessibles publiquement
loadingInterface utilisateur de chargement pour un segment et ses enfants
not-foundInterface utilisateur "non trouvé" pour un segment et ses enfants
errorInterface utilisateur d'erreur pour un segment et ses enfants
global-errorInterface utilisateur d'erreur globale
routePoint de terminaison API côté serveur
templateInterface utilisateur de mise en page spécialisée re-rendue
defaultInterface utilisateur de repli pour les routes parallèles

Bon à savoir : Les extensions de fichiers .js, .jsx ou .tsx peuvent être utilisées pour les fichiers spéciaux.

Hiérarchie des composants

Les composants React définis dans les fichiers spéciaux d'un segment de route sont rendus dans une hiérarchie spécifique :

  • layout.js
  • template.js
  • error.js (limite d'erreur React)
  • loading.js (limite de suspense React)
  • not-found.js (limite d'erreur React)
  • page.js ou layout.js imbriqué
Hiérarchie des composants pour les conventions de fichiers

Dans une route imbriquée, les composants d'un segment seront imbriqués à l'intérieur des composants de son segment parent.

Hiérarchie des composants pour les conventions de fichiers imbriquées

Colocalisation

En plus des fichiers spéciaux, vous avez la possibilité de colocaliser vos propres fichiers (par exemple, composants, styles, tests, etc.) dans des dossiers du répertoire app.

C'est parce que bien que les dossiers définissent les routes, seuls les contenus retournés par page.js ou route.js sont accessibles publiquement.

Exemple de structure de dossiers avec fichiers colocalisés

Apprenez-en plus sur l'organisation de projet et la colocalisation.

Modèles de routage avancés

Le routeur App fournit également un ensemble de conventions pour vous aider à implémenter des modèles de routage plus avancés. Ceux-ci incluent :

  • Routes parallèles : Vous permettent d'afficher simultanément deux pages ou plus dans la même vue qui peuvent être naviguées indépendamment. Vous pouvez les utiliser pour des vues divisées ayant leur propre sous-navigation. Par ex. Tableaux de bord.
  • Routes d'interception : Vous permettent d'intercepter une route et de l'afficher dans le contexte d'une autre route. Vous pouvez les utiliser lorsque le maintien du contexte pour la page actuelle est important. Par ex. Voir toutes les tâches lors de l'édition d'une tâche ou agrandir une photo dans un flux.

Ces modèles vous permettent de créer des interfaces utilisateur plus riches et complexes, démocratisant des fonctionnalités historiquement complexes à implémenter pour les petites équipes et les développeurs individuels.

Prochaines étapes

Maintenant que vous comprenez les principes fondamentaux du routage dans Next.js, suivez les liens ci-dessous pour créer vos premières routes :

Définition des routes

Apprenez à créer votre première route dans Next.js.

Pages et Layouts

Créez votre première page et un layout partagé avec le routeur App.

Liaison et navigation

Découvrez comment fonctionne la navigation dans Next.js et comment utiliser le composant Link et le hook `useRouter`.

Interface de chargement et streaming

Basé sur Suspense, l'interface de chargement permet de créer un contenu de repli pour des segments de route spécifiques et de diffuser automatiquement le contenu dès qu'il est prêt.

Gestion des erreurs

Gérez les erreurs d'exécution en englobant automatiquement les segments de route et leurs enfants dans une limite d'erreur React.

Redirections

Découvrez les différentes méthodes pour gérer les redirections dans Next.js.

Groupes de routes

Les groupes de routes permettent de partitionner votre application Next.js en différentes sections.

Organisation de projet

Apprenez à organiser votre projet Next.js et à colocaliser vos fichiers.

Routes dynamiques

Les routes dynamiques permettent de générer des segments d'URL à partir de données dynamiques de manière programmatique.

Routes parallèles

Affichez simultanément une ou plusieurs pages dans la même vue avec une navigation indépendante. Un modèle pour les applications hautement dynamiques.

Routes d'interception

Utilisez les routes d'interception pour charger une nouvelle route dans la mise en page actuelle tout en masquant l'URL du navigateur, utile pour des motifs de routage avancés comme les modales.

Gestionnaires de route (Route Handlers)

Créez des gestionnaires de requête personnalisés pour une route donnée en utilisant les API Request et Response du Web.

Middleware

Apprenez à utiliser le Middleware pour exécuter du code avant qu'une requête ne soit complétée.

Internationalisation

Ajoutez la prise en charge de plusieurs langues avec un routage internationalisé et un contenu localisé.