- Published on
Directory Structure
Next.js simplifie grandement la gestions des routes, grâce à un système de routage basé sur les structures de fichiers. Un concept intuitif et puissant, qui permet de structurer les fichiers de manière efficace et facile à maintenir.
Next.js simplifie grandement la gestions des routes, grâce à un système de routage basé sur les structures de fichiers. Un concept intuitif et puissant, qui permet de structurer les fichiers de manière efficace et facile à maintenir.
Le Routage automatique
L'une des principales caractéristiques de Next.js est son système de routage automatique. Au lieu de spécifier explicitement chaque route, Next.js utilise automatiquement les fichiers dans l'app directory /app
pour générer les routes.
app
├── blog
│ ├── page.tsx
│ └── post
│ ├── [id]
│ │ └── page.tsx
│ └── page.tsx
├── about
│ ├── page.tsx
│ └── team
│ └── page.tsx
├── contact
│ ├── page.tsx
│ └── form
│ └── page.tsx
├── index.tsx
├── page.tsx
- Dans l'exemple ci-dessus, le fichier
/app/page.tsx
correspond à la page/
. - Le fichier
/app/posts/page.tsx
correspond à la page/posts
.
Cette convention rend le code plus lisible et la gestion des routes plus naturelle. Chaque segment d'URL est directement lié à un dossier, et les fichiers page.tsx
définissent les points d'entrée de chaque route.
Fichiers spéciaux et colocalisation
Outre les fichiers page.tsx
, d'autres fichiers peuvent être présents dans le répertoire. Voici quelques exemples :
app
├── components
│ ├── Header.tsx
│ └── Footer.tsx
├── lib
│ ├── utils.ts
│ └── hooks.ts
├── blog
│ ├── page.tsx
│ └── nav.tsx
- Les dossiers
components
etlib
sont des dossiers composants et utilitaires qui peuvent être utilisés par plusieurs pages. A l'intérieur de ces dossiers, des fichiers commeHeader.tsx
ouutils.ts
sont présents, on considère qu'ils sont "colocalisés" avec le dossier parent.
A proprement dit, ils ne sont pas routables.
- Le dossier
blog
lui est considéré comme une page, car il contient un fichierpage.tsx
, qui pour être totalement considéré comme telle, doit être exporté par défaut.
export default function BlogPage() {
return <div>Blog page</div>;
}
Concernant les routes dynamiques comme /posts/[id]
, on en reperlera dans cette article.