Types du routeur d’application ; composants serveur ou client
Comprenez les valeurs par défaut de l’App Router (composants serveur), quand opter pour des composants client et comment typer les gestionnaires de routes.
Types du routeur d’application ; composants serveur ou client est une leçon TypeScript Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage TypeScript Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours TypeScript Academy comprend 3 leçons au total.
Introduction
Objectif : utiliser le Routeur d’application avec TypeScript en toute confiance. Vous découvrirez les composants serveur (par défaut), apprendrez à activer les composants client lorsque nécessaire et typerez les gestionnaires de route pour les points d’accès d’API.
- Capacités côté serveur et côté client
- Transmission de propriétés typées entre les deux
- NextRequest/NextResponse typés
Composant serveur
Les fichiers sous app/ sont par défaut des composants serveur. Vous pouvez exécuter du code réservé au serveur et récupérer les données avant le rendu.
// app/page.tsx (server component by default)
export default async function Page() {
// Server code: read env, fetch data, call DB (conceptually)
const data: { message: string } = { message: "Hello from server component" }
return (
<main style={{ display: "grid", gap: 8 }}>
<h1>Home</h1>
<p>{data.message}</p>
</main>
)
}Composant client
Ajoutez la directive "use client" en haut du fichier pour activer les crochets et les gestionnaires d’événements. Les composants client s’exécutent dans le navigateur.
"use client"
import { useState } from "react"
// app/components/Counter.tsx (client component)
export default function Counter() {
const [n, setN] = useState(0)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}Propriétés du serveur vers le client
Calculez les données côté serveur et transmettez-les sous forme de propriétés typées aux composants client. Gardez la logique réservée au serveur hors du client.
// app/page.tsx (server) + client import
import Counter from "./components/Counter"
export default async function Page() {
const initial = 5 // fetched or computed on the server
return (
<main style={{ display: "grid", gap: 12 }}>
<h2>Dashboard</h2>
<CounterWithStart start={initial} />
</main>
)
}
// app/components/CounterWithStart.tsx
"use client"
import { useState } from "react"
export default function CounterWithStart({ start }: { start: number }) {
const [n, setN] = useState(start)
return (
<div style={{ display: "flex", gap: 8, alignItems: "center" }}>
<button onClick={() => setN(n - 1)}>-</button>
<span>{n}</span>
<button onClick={() => setN(n + 1)}>+</button>
</div>
)
}Gestionnaires de route
Utilisez NextRequest/NextResponse pour les gestionnaires typés sous app/api/*/route.ts. Renvoyez du JSON avec des codes d’état.
// app/api/hello/route.ts (App Router API)
import { NextRequest, NextResponse } from "next/server"
export async function GET(req: NextRequest) {
const name = req.nextUrl.searchParams.get("name") ?? "world"
const body: { message: string } = { message: `Hello, ${name}!` }
return NextResponse.json(body, { status: 200 })
}
export async function POST(req: NextRequest) {
const payload = (await req.json()) as { name?: string }
const body = { created: true, name: payload.name ?? "anon" }
return NextResponse.json(body, { status: 201 })
}Conseils
Conseils :
- Privilégiez les composants serveur par défaut ; activez le client uniquement lorsque vous avez besoin d’interactivité.
- Gardez les propriétés petites et sérialisables entre le serveur et le client.
- Utilisez systématiquement des structures typées avec
NextResponse.json.
Vérification du client dans le Routeur d’application
Vérification rapide : comment activez-vous les crochets dans un fichier de composant du Routeur d’application ?
Récapitulatif
Récapitulatif : le Routeur d’application utilise par défaut les composants serveur ; ajoutez "use client" pour l’interactivité, transmettez des propriétés typées de part et d’autre de la frontière et typez les gestionnaires de route avec NextRequest/NextResponse.
Apprends TypeScript avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 101
- Leçons
- 352
Questions Fréquemment Posées
La leçon « Types du routeur d’application ; composants serveur ou client » est-elle gratuite ?
Oui — le texte complet de « Types du routeur d’application ; composants serveur ou client » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours TypeScript Academy, passe à CoddyKit PRO. Le cours TypeScript Academy comprend 3 leçons au total.
Qu'est-ce que j'apprendrai dans « Types du routeur d’application ; composants serveur ou client » ?
Comprenez les valeurs par défaut de l’App Router (composants serveur), quand opter pour des composants client et comment typer les gestionnaires de routes. Tu pratiques TypeScript Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer TypeScript Academy ?
Aucune expérience préalable n'est requise. TypeScript Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.
Combien de temps prend la leçon « Types du routeur d’application ; composants serveur ou client » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon TypeScript Academy ?
Oui. Chaque leçon TypeScript Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Types du routeur d’application ; composants serveur ou client
- Récupération des données et typage des actions
- Typage de l’environnement et configuration