Skip to Content
🎉 Utilisez JS efficacement →
Next.jsIntroduction à Next.js 📚Avantages de l’architecture `app/`

🚀 Avantages de l’architecture app/ (Next.js 13+)

L’architecture app/ de Next.js 13+ repose sur plusieurs amĂ©liorations majeures, notamment les Server Components, qui optimisent le rendu et les performances globales des applications web. Voici un aperçu des principaux avantages :


1ïžâƒŁ Server Components : Moins de JavaScript cĂŽtĂ© client

📌 Concept clĂ© : Dans app/, les composants sont par dĂ©faut des Server Components, ce qui signifie qu’ils sont exĂ©cutĂ©s sur le serveur et ne sont pas envoyĂ©s au navigateur.

✅ Moins de JavaScript Ă  charger → amĂ©liore le Time to Interactive (TTI).
✅ Pas besoin de gĂ©rer des Ă©tats client inutiles → moins de re-renders.
✅ AccĂšs direct aux bases de donnĂ©es et API (sans besoin d’API routes).

Exemple d’un Server Component (par dĂ©faut) dans app/ :

app/dashboard/page.tsx
import db from "@/lib/db"; // Connexion directe Ă  une base de donnĂ©es export default async function Dashboard() { const users = await db.getUsers(); // Pas besoin d’API externe return ( <div> <h1>Liste des utilisateurs</h1> <ul> {users.map((user) => ( <li key={user.id}>{user.name}</li> ))} </ul> </div> ); }
💡

Avec pages/, cette logique aurait nécessité une API Route (/api/users) pour récupérer les données cÎté client !


2ïžâƒŁ Une meilleure performance et gestion du rendu

FonctionnalitéPages Router (pages/)App Router (app/)
JavaScript envoyé au clientPlus importantRéduit grùce aux Server Components
Re-renders clientPlus fréquentsMoins fréquents
Gestion des donnéesNécessite API RoutesFetching natif dans Server Components
StreamingComplexeFacile via React Suspense

✅ Optimisation automatique : Next.js ne charge que le JavaScript nĂ©cessaire.
✅ Streaming : Permet d’afficher progressivement le contenu, amĂ©liorant l’expĂ©rience utilisateur.
✅ Prefetching plus intelligent : Next.js charge les pages en arriĂšre-plan avant mĂȘme que l’utilisateur ne clique sur un lien.


3ïžâƒŁ Un systĂšme de routing et de layouts plus efficace

📌 Dans app/, on peut structurer l’application avec des layout.tsx Ă  diffĂ©rents niveaux pour partager des composants sans les recharger inutilement.

Exemple : Un Layout partagé pour un tableau de bord

app/dashboard/layout.tsx
export default function DashboardLayout({ children }: { children: React.ReactNode }) { return ( <div> <nav>Menu</nav> {/* Gardé en mémoire entre les pages */} <main>{children}</main> </div> ); }
💡

Contrairement à _app.js, le layout.tsx ne recharge pas l’ensemble de l’application à chaque navigation !

4ïžâƒŁ MĂ©tadonnĂ©es et SEO intĂ©grĂ©s (generateMetadata)

✅ Plus besoin d’utiliser <Head> partout comme dans pages/.
✅ Gestion simplifiĂ©e et dynamique des balises SEO.

Exemple d’une mĂ©tadonnĂ©e dynamique dans app/ :

app/blog/[slug]/page.tsx
export async function generateMetadata({ params }) { return { title: `Article : ${params.slug}`, description: `DĂ©couvrez notre article sur ${params.slug}.`, }; }
➡

Avec pages/, cela nécessitait next/head dans chaque fichier !

5ïžâƒŁ Server Actions : API Routes simplifiĂ©es

📌 Dans app/, plus besoin de crĂ©er des API routes (pages/api/*).
✅ On peut directement appeler des fonctions serveur depuis un composant.

Exemple : Un formulaire qui enregistre des données en base

app/contact/page.tsx
"use server"; async function sendMessage(formData) { await db.messages.create({ text: formData.get("message") }); } export default function ContactPage() { return ( <form action={sendMessage}> <textarea name="message" /> <button type="submit">Envoyer</button> </form> ); }
💡

Avec pages/, on aurait dû créer une API Route (/api/send-message) pour gérer ça !


🚀 Conclusion : Pourquoi adopter app/ ?

✅ Moins de JavaScript cĂŽtĂ© client → site plus rapide.
✅ Gestion du rendu plus performante → grñce aux Server Components.
✅ SystĂšme de routing plus flexible et intelligent → layouts imbriquĂ©s.
✅ SEO natif → plus facile Ă  gĂ©rer avec generateMetadata().
✅ Moins d’API routes → remplacĂ©es par les Server Actions.

💡 L’App Router de Next.js 13+ offre une approche plus moderne et performante pour les applications React. Si tu crĂ©es un nouveau projet, app/ est la meilleure option ! 🚀

mis Ă  jour le