حالات تطبيقية في Next.js

عدد الحالات التطبيقية المتاحة في ⁨Next.js⁩: 30. المستويات: أساسي (10)، متقدم (10)، خبير (10).

جزء من: حالات تطبيقية في تطوير الواجهات الأمامية

أساسيNext.js

Correction d'un composant Link mal utilisé

Contexte : Une application Next.js contient un menu de navigation vers plusieurs pages internes. Le Problème : La navigation provoque un rechargement complet de la page au lieu d'un routage côté client. Contraintes : Vous devez utiliser le composant Link de Next.js correctement sans ajouter de librairie. Code actuel : export default function Home() { return ( <a href="/about">About</a> ); } Livrable attendu : Modifier le code pour utiliser le système de navigation interne de Next.js sans rechargement complet.

nextjslinkrouting+1
أساسيNext.js

Correction d'un getServerSideProps qui ne transmet pas les données

Contexte : Vous reprenez une page Next.js utilisée pour afficher une liste d'articles récupérés côté serveur pour un blog interne. Le Problème : Les données sont bien récupérées dans getServerSideProps mais la page affiche une erreur indiquant que props.articles est undefined. Contraintes : Vous devez corriger uniquement la transmission des props. Aucune librairie externe autorisée. Le rendu doit rester côté serveur. Code actuel : export async function getServerSideProps() { const res = await fetch("https://api.example.com/articles"); const articles = await res.json(); return { articles: articles }; } export default function Blog({ articles }) { return ( <ul> {articles.map(a => ( <li key={a.id}>{a.title}</li> ))} </ul> ); } Livrable attendu : Corriger la structure de retour de getServerSideProps pour que les données soient correctement injectées dans le composant.

nextjsssrgetserversideprops+1
أساسيNext.js

Correction d'un problème d'image non optimisée

Contexte : Une page affiche des images produits importées directement via balise img. Le Problème : Les performances Lighthouse sont mauvaises à cause d'images non optimisées. Contraintes : Utiliser le composant Image de Next.js. Aucune librairie externe. Livrable attendu : Remplacer la balise img par le composant optimisé Image avec width et height appropriés.

nextjsimageperformance+1
أساسيNext.js

Correction d'une variable d'environnement inaccessible

Contexte : Une page tente d'utiliser une variable d'environnement pour afficher une clé publique. Le Problème : La variable process.env.API_KEY retourne undefined côté client. Contraintes : Vous devez respecter les conventions Next.js concernant les variables publiques. Livrable attendu : Corriger la configuration pour que la variable soit accessible côté client.

nextjsenvironmentconfig+1
أساسيNext.js

Création d'un layout partagé global

Contexte : Plusieurs pages partagent le même header et footer dans votre application Next.js. Le Problème : Le code est dupliqué dans chaque page. Contraintes : Mettre en place un layout global simple sans librairie externe. Livrable attendu : Créer un composant Layout et l'intégrer dans _app.js pour encapsuler toutes les pages.

nextjslayoutarchitecture+1
أساسيNext.js

Création d'une page 404 personnalisée

Contexte : L'application affiche la page 404 par défaut de Next.js. Le Problème : L'équipe souhaite une page 404 personnalisée respectant la charte graphique. Contraintes : Respecter la convention Next.js pour la page 404. Livrable attendu : Créer un fichier 404.js personnalisé affichant un message clair et un lien de retour à l'accueil.

nextjs404routing+1
أساسيNext.js

Création d'une page statique avec génération à la build

Contexte : Votre équipe souhaite optimiser les performances d'une page marketing affichant des contenus peu fréquents. Le Problème : La page est actuellement rendue côté client, ce qui ralentit le chargement initial. Contraintes : Utiliser getStaticProps. Aucune librairie externe. Livrable attendu : Implémenter une page Next.js utilisant getStaticProps pour récupérer des données statiques à la build et les afficher correctement.

nextjsssggetstaticprops+1
أساسيNext.js

Implémentation d'un middleware simple de redirection

Contexte : Vous devez rediriger automatiquement les utilisateurs non authentifiés vers la page login. Le Problème : Aucune logique de redirection globale n'est en place. Contraintes : Utiliser le middleware Next.js natif. Livrable attendu : Implémenter un middleware simple qui vérifie une condition et redirige vers /login si nécessaire.

nextjsmiddlewareredirect+1
أساسيNext.js

Mise en place d'une API Route simple

Contexte : Votre application Next.js doit exposer une petite API interne pour retourner un message JSON. Le Problème : Aucun endpoint backend n'existe actuellement dans le projet. Contraintes : Utiliser le dossier pages/api. Retourner une réponse JSON valide. Livrable attendu : Créer une API Route Next.js retournant un objet JSON simple avec un statut 200.

nextjsapiroutebackend+1
أساسيNext.js

Stabilisation d'une route dynamique mal configurée

Contexte : Une application Next.js doit afficher le détail d'un produit via une route dynamique basée sur son id. Le Problème : La page affiche toujours undefined pour l'id récupéré dans le composant. Contraintes : Vous devez conserver l'utilisation du router Next.js. Aucune modification de structure globale. Code actuel : import { useRouter } from "next/router"; export default function Product() { const router = useRouter(); const { id } = router.query; return <p>Produit {router.id}</p>; } Livrable attendu : Corriger l'accès au paramètre dynamique afin d'afficher correctement l'id du produit.

nextjsroutingdynamicroute+1
متقدمNext.js

Conception d'une architecture App Router modulaire

Contexte : Vous migrez une application Next.js vers l'App Router (Next 13+). Le Problème : L'architecture actuelle basée sur pages/ devient difficile à maintenir. Contraintes : Structurer proprement les layouts, routes et composants serveur. Livrable attendu : Proposer une structure App Router modulaire avec layouts imbriqués et séparation claire des responsabilités.

nextjsapprouterarchitecture+1
متقدمNext.js

Correction d'un problème de variables d'environnement en production

Contexte : L'application fonctionne en local mais échoue en production à cause d'une variable d'environnement manquante. Le Problème : Certaines variables ne sont pas accessibles selon le contexte serveur ou client. Contraintes : Respecter les conventions NEXT_PUBLIC et différencier serveur/client. Livrable attendu : Corriger la configuration pour assurer un accès cohérent aux variables d'environnement selon le contexte d'exécution.

nextjsenvironmentconfiguration+1
متقدمNext.js

Correction d'une API Route avec gestion d'erreurs incomplète

Contexte : Une API Route Next.js expose un endpoint POST pour créer un utilisateur. Le Problème : En cas d'erreur, l'API retourne toujours un statut 200, ce qui complique la gestion côté client. Contraintes : Vous devez implémenter une gestion correcte des statuts HTTP. Code actuel : export default function handler(req, res) { if (req.method === "POST") { try { const { name } = req.body; res.status(200).json({ success: true }); } catch (e) { res.json({ error: "Something went wrong" }); } } } Livrable attendu : Corriger la gestion des erreurs pour retourner des statuts HTTP appropriés.

nextjsapiroutebackend+1
متقدمNext.js

Implémentation d'un système de pagination côté serveur

Contexte : Une page affiche une longue liste d'articles récupérés via SSR. Le Problème : Tous les articles sont chargés en une seule fois, ce qui ralentit le rendu. Contraintes : Implémenter une pagination via query params avec getServerSideProps. Livrable attendu : Mettre en place une pagination côté serveur permettant de limiter le nombre d'éléments chargés par page.

nextjsssrpagination+1
متقدمNext.js

Implémentation d'une stratégie ISR pour contenu évolutif

Contexte : Une page d'actualités doit être rapide tout en se mettant à jour régulièrement. Le Problème : Le SSR pur est coûteux et le SSG pur ne reflète pas les mises à jour fréquentes. Contraintes : Utiliser Incremental Static Regeneration. Livrable attendu : Implémenter getStaticProps avec revalidate pour permettre une mise à jour périodique automatique.

nextjsisrssg+1
متقدمNext.js

Mise en place d'un système d'authentification avec protection de pages

Contexte : Votre application Next.js doit protéger certaines pages accessibles uniquement aux utilisateurs authentifiés. Le Problème : Actuellement, toutes les routes sont accessibles librement. Contraintes : Aucun framework externe d'authentification. Utiliser middleware ou logique côté serveur. Livrable attendu : Implémenter un mécanisme de protection de route redirigeant les utilisateurs non authentifiés vers /login tout en conservant une bonne expérience utilisateur.

nextjsauthenticationmiddleware+1
متقدمNext.js

Mise en place d'un système de layout dynamique par page

Contexte : Certaines pages de l'application nécessitent un layout différent (dashboard vs site marketing). Le Problème : Le layout global actuel ne permet pas cette flexibilité. Contraintes : Implémenter une solution propre compatible avec _app.js. Livrable attendu : Permettre aux pages de définir dynamiquement leur propre layout sans dupliquer la logique.

nextjslayoutarchitecture+1
متقدمNext.js

Optimisation d'un bundle trop volumineux

Contexte : L'analyse du build montre un bundle JavaScript principal trop lourd. Le Problème : Certaines librairies sont chargées alors qu'elles ne sont utilisées que sur des pages spécifiques. Contraintes : Utiliser le dynamic import natif de Next.js. Livrable attendu : Implémenter un chargement dynamique de composants afin de réduire la taille du bundle initial.

nextjsdynamicimportperformance+1
متقدمNext.js

Optimisation d'un chargement de données côté client vers SSG hybride

Contexte : Une page produit récupère actuellement ses données côté client via useEffect, provoquant un délai d'affichage initial. Le Problème : Les performances SEO sont impactées et le contenu met du temps à apparaître. Contraintes : Migrer vers getStaticProps avec revalidation ISR. Livrable attendu : Transformer la page pour utiliser SSG avec revalidation automatique afin d'améliorer les performances et le SEO.

nextjsssgisr+1
متقدمNext.js

Stabilisation d'un système SSR provoquant des erreurs d'hydratation

Contexte : Vous reprenez une application Next.js utilisant le rendu côté serveur pour afficher un dashboard personnalisé. Le Problème : En production, l'application affiche une erreur d'hydratation indiquant que le contenu rendu côté serveur ne correspond pas au rendu côté client. Contraintes : Vous devez conserver le SSR avec getServerSideProps. Aucune librairie externe autorisée. La correction doit éviter toute divergence entre rendu serveur et client. Code actuel : export async function getServerSideProps() { return { props: { date: new Date().toLocaleString() } }; } export default function Page({ date }) { return <div>{date}</div>; } Livrable attendu : Corriger la logique afin d'éviter les erreurs d'hydratation tout en conservant un rendu cohérent.

nextjsssrhydration+1
خبيرNext.js

Conception d'un système d'authentification SSR sécurisé avec refresh token

Contexte : Vous devez implémenter une authentification robuste dans une application Next.js utilisant SSR pour les pages sensibles. Le Problème : Le token JWT expire et provoque des déconnexions brutales lors des rendus serveur. Contraintes : Aucun framework externe d'authentification. Gestion sécurisée via cookies HTTPOnly. Compatibilité SSR obligatoire. Livrable attendu : Concevoir une architecture complète intégrant login, stockage sécurisé des tokens, refresh automatique côté serveur et protection des routes sensibles.

nextjsjwtssr+2
خبيرNext.js

Conception d'une architecture multi-tenant avec routing dynamique

Contexte : Vous développez une plateforme SaaS multi-tenant où chaque client possède son sous-domaine. Le Problème : L'application doit détecter dynamiquement le tenant et charger les données correspondantes. Contraintes : Utiliser middleware et SSR. Aucune duplication de code par tenant. Livrable attendu : Concevoir une architecture capable d'identifier le tenant via le hostname, charger ses données et sécuriser l'isolation des informations.

nextjsmultitenantmiddleware+2
خبيرNext.js

Correction d'une API Route vulnérable aux attaques de type injection

Contexte : Une API Route Next.js permet de rechercher des utilisateurs via un paramètre transmis en requête. Le Problème : L'endpoint accepte directement les paramètres sans validation, exposant potentiellement l'application à des injections ou abus. Contraintes : Aucun framework externe de validation. Mise en place d'une validation robuste et gestion des erreurs HTTP. Code actuel : export default function handler(req, res) { const query = req.query.q; const result = database.search(query); res.status(200).json(result); } Livrable attendu : Sécuriser l'API Route avec validation stricte des entrées et gestion appropriée des erreurs.

nextjsapiroutesecurity+2
خبيرNext.js

Correction d'une fuite mémoire dans un Middleware global

Contexte : Une application SaaS utilise un middleware Next.js pour vérifier un token à chaque requête. Le Problème : En production, le serveur Edge montre une consommation mémoire croissante et des latences importantes. Contraintes : Vous devez conserver le middleware natif. Aucun framework externe. Le code doit être compatible avec l'environnement Edge Runtime. Code actuel : export function middleware(req) { const token = req.cookies.get("token"); if (!token) { return Response.redirect(new URL("/login", req.url)); } const decoded = JSON.parse(atob(token)); return Response.next(); } Livrable attendu : Identifier et corriger les mauvaises pratiques dans le middleware pour éviter toute surcharge ou traitement inutile.

nextjsmiddlewareedge+2
خبيرNext.js

Implémentation d'un système de cache côté serveur avec invalidation intelligente

Contexte : Une application B2B consomme une API coûteuse en temps de réponse pour afficher des tableaux analytiques. Le Problème : Les appels répétés dégradent fortement les performances et augmentent les coûts backend. Contraintes : Utiliser les mécanismes de cache natifs de Next.js (fetch cache, revalidate, headers). Aucun outil externe. Livrable attendu : Mettre en place une stratégie de cache côté serveur avec invalidation conditionnelle garantissant performance et fraîcheur des données.

nextjscachessr+2
خبيرNext.js

Mise en place d'un système de rate limiting sur API Routes

Contexte : Une API publique intégrée à votre application Next.js reçoit un nombre croissant de requêtes. Le Problème : Aucun mécanisme ne limite les abus ou les attaques par flood. Contraintes : Implémentation maison sans librairie externe. Compatible avec déploiement serverless. Livrable attendu : Concevoir un système simple de rate limiting basé sur IP ou token avec gestion des erreurs HTTP 429.

nextjsapirouteratelimiting+2
خبيرNext.js

Optimisation avancée d'un App Router avec Server Components

Contexte : Vous migrez une application volumineuse vers l'App Router de Next.js 13+ en utilisant des Server Components. Le Problème : Certains composants utilisent encore des hooks client, provoquant des erreurs de compilation et une mauvaise séparation serveur/client. Contraintes : Respecter strictement la séparation Server Components / Client Components. Aucune librairie externe. Livrable attendu : Refactoriser l'architecture pour exploiter pleinement les Server Components, réduire le bundle client et structurer correctement les boundaries "use client".

nextjsapprouterservercomponents+2
خبيرNext.js

Optimisation d'un streaming SSR avec Suspense

Contexte : Une application analytique affiche plusieurs widgets dépendant de sources de données distinctes. Le Problème : Le rendu SSR bloque tant que toutes les données ne sont pas chargées. Contraintes : Utiliser le streaming SSR avec Suspense dans l'App Router. Aucun outil externe. Livrable attendu : Mettre en place un rendu progressif permettant d'afficher certaines parties de la page pendant que d'autres chargent encore.

nextjsstreamingsuspense+2
خبيرNext.js

Refactorisation d'un monolithe pages/ vers App Router modulaire

Contexte : Une application historique Next.js repose entièrement sur le dossier pages/ avec une logique mêlant rendu serveur et client. Le Problème : L'architecture devient difficilement maintenable et empêche l'exploitation des nouvelles optimisations de Next.js. Contraintes : Migration progressive vers App Router sans interruption de service. Séparation claire server/client. Livrable attendu : Proposer une stratégie de migration structurée vers App Router avec layouts imbriqués, server components et optimisation du bundle.

nextjsapproutermigration+2
خبيرNext.js

Stabilisation d'un système ISR provoquant des données incohérentes

Contexte : Vous intervenez sur une plateforme e-commerce développée avec Next.js utilisant Incremental Static Regeneration pour afficher des fiches produits. Le Problème : Après certaines mises à jour côté backend, les utilisateurs voient encore d'anciennes données pendant plusieurs minutes. Le mécanisme de revalidation semble mal configuré et provoque des incohérences. Contraintes : Vous devez conserver getStaticProps avec revalidate. Aucune librairie externe autorisée. La solution doit garantir une cohérence forte après mise à jour critique. Livrable attendu : Corriger et améliorer la stratégie ISR afin d'assurer une revalidation fiable, potentiellement en combinant revalidate et revalidation à la demande via API Route sécurisée.

nextjsisrssg+2

أسئلة أصلية من تصميم CodeDuel. لا ترتبط CodeDuel بأي ناشر أو هيئة اعتماد مذكورة؛ أسماء الشهادات والعلامات التجارية مملوكة لأصحابها، ولا تُذكر إلا للإشارة إلى المجال الذي يغطيه الاختبار. الإبلاغ عن محتوى

    Cas pratiques Next.js : 30 mises en situation | CodeDuel