đ 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.tsx
entoure 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.