🚀 Mise en place de Layouts (layout.tsx) pour une structuration globale dans Next.js
L’un des grands avantages du App Router (app/) est la gestion des layouts imbriqués grâce aux fichiers layout.tsx. Cela permet de structurer l’interface sans recharger les éléments communs (ex: navigation, footer).
1️⃣ Qu’est-ce qu’un layout.tsx ?
📌 Un layout.tsx est un composant persistant qui englobe les pages enfants.
📌 Chaque dossier dans app/ peut avoir son propre layout.tsx.
📌 Un layout peut être imbriqué pour organiser les sous-sections d’un site.
🛠 Exemple d’architecture avec des layouts :
app/
├── layout.tsx → Layout principal (Header, Footer)
├── page.tsx → Page d’accueil "/"
├── dashboard/
│ ├── layout.tsx → Layout spécifique au dashboard
│ ├── page.tsx → Page "/dashboard"
│ ├── settings/
│ │ ├── page.tsx → Page "/dashboard/settings"📍 Chaque page utilise son layout parent sans recharger les composants communs !
2️⃣ Exemple : Création d’un layout.tsx global
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="fr">
<body>
<header>
<nav>
<ul>
<li><a href="/">Accueil</a></li>
<li><a href="/dashboard">Dashboard</a></li>
</ul>
</nav>
</header>
<main>{children}</main>
<footer>© 2025 Mon Site</footer>
</body>
</html>
);
}💡 Explication :
- ✅ Le
layout.tsxentoure chaque page avec une structure HTML complète. - ✅ La balise
<main>{children}</main>affiche le contenu des pages enfants. - ✅ Le
<header>et<footer>sont partagés sur toutes les pages !
3️⃣ Exemple : Layout spécifique pour le dashboard
export default function DashboardLayout({ children }: { children: React.ReactNode }) {
return (
<section>
<aside>
<ul>
<li><a href="/dashboard">Accueil</a></li>
<li><a href="/dashboard/settings">Paramètres</a></li>
</ul>
</aside>
<div className="content">{children}</div>
</section>
);
}💡 Ce layout s’applique uniquement aux pages dans /dashboard.
4️⃣ Différence avec _app.tsx dans pages/
| 🛠️ Feature | 🏗 _app.tsx (pages/) | 🚀 layout.tsx (app/) |
|---|---|---|
| Gestion du layout | Un seul _app.tsx global | Un layout.tsx par section |
| Rechargement | Rechargement complet du layout | ✅ Layout persistant |
| Performance | Moins optimisé | ✅ Moins de JS envoyé côté client |
| Flexibilité | Difficile d’imbriquer | ✅ Imbriqué et modulaire |
🎯 Conclusion : Pourquoi utiliser layout.tsx ?
✔ Meilleures performances → Le layout ne se recharge pas à chaque changement de page.
✔ Structure claire et modulaire → Permet d’organiser l’interface facilement.
✔ Facilité d’extension → Possibilité d’avoir plusieurs layouts pour différentes sections du site.