Chapitre 1 · Leçon 1
Comprendre le nouveau modèle de rendu de Next.js
Section 1
Step 1
Dans l'App Router, tous les composants sont Server Components par défaut. Ils s'exécutent sur le serveur, ont accès à la base de données et aux variables d'environnement, et n'envoient pas de JS au client.
app/tutorials/page.tsx
1// ✅ Server Component — pas de "use client"
2// S'exécute sur le serveur, accès direct à la DB
3import { db } from "@/lib/db";
4
5async function TutorialsPage() {
6 // Requête DB directe — pas de fetch('/api/...')
7 const tutorials = await db.tutorial.findMany({
8 where: { publishedAt: { not: null } },
9 orderBy: { publishedAt: "desc" },
10 include: { category: true },
11 });
12
13 return (
14 <main>
15 <h1>Tutoriels</h1>
16 <ul>
17 {tutorials.map((t) => (
18 <TutorialCard key={t.id} tutorial={t} />
19 ))}
20 </ul>
21 </main>
22 );
23}
24
25export default TutorialsPage;Step 2
use client est nécessaire pour les composants qui utilisent des hooks React, des event listeners, ou des API browser. Garde les Client Components aussi bas que possible dans l'arbre.
Section 2
Step 3
L'App Router utilise des conventions de fichiers dans le dossier app/. Chaque dossier correspond à un segment d'URL.
Step 4
Les paramètres dynamiques ([slug]) et les query params (?q=) sont passés en props aux pages. Dans Next.js 15, ils sont des Promises.