Cas pratiques Svelte

30 cas pratiques Svelte disponibles. Niveaux : fondamental (10), avancé (10), expert (10).

Fait partie de : Cas pratiques de développement front-end

FondamentalSvelte

Correction d'un champ non synchronisé avec bind:value

Contexte : Une équipe RH utilise un formulaire Svelte pour collecter des informations utilisateur. Le Problème : La valeur saisie dans le champ input ne met pas à jour la variable affichée dans le composant. Contraintes : Utiliser la directive bind:value sans librairie externe. Code actuel : <script> let name = ''; </script> <input value={name} /> <p>{name}</p> Livrable attendu : Corriger le binding afin que la variable soit automatiquement synchronisée avec la saisie utilisateur.

sveltebindform+1
FondamentalSvelte

Correction d'un compteur non réactif dans un composant Svelte

Contexte : Vous reprenez un petit module Svelte utilisé dans un dashboard interne pour afficher un compteur d'actions réalisées par un utilisateur. Le Problème : Lorsque l'utilisateur clique sur le bouton, la valeur affichée ne se met pas à jour correctement dans l'interface. Contraintes : Vous devez conserver un composant simple sans librairie externe. La solution doit respecter le modèle de réactivité natif de Svelte. Code actuel : <script> let count = 0; function increment() { count = count + 1; count = count + 1; } </script> <button on:click={increment}>Increment</button> <p>{count}</p> Livrable attendu : Corriger la logique afin que le compteur incrémente correctement et reflète la valeur attendue après chaque clic.

sveltereactivitycomponent+1
FondamentalSvelte

Correction d'un rendu conditionnel mal structuré

Contexte : Une application doit afficher un message uniquement si l'utilisateur est connecté. Le Problème : Le message s'affiche toujours, quelle que soit la valeur de la variable. Contraintes : Utiliser correctement la syntaxe {#if}. Aucune dépendance externe. Code actuel : <script> let isLogged = false; </script> <p>Bienvenue</p> Livrable attendu : Ajouter une condition de rendu appropriée afin que le message ne s'affiche que lorsque isLogged est true.

svelteconditionalifblock+1
FondamentalSvelte

Correction d'une variable dérivée non réactive

Contexte : Une application affiche le prénom et le nom d'un utilisateur et doit générer automatiquement le nom complet. Le Problème : Le nom complet ne se met pas à jour lorsque l'une des variables change. Contraintes : Utiliser les déclarations réactives avec le symbole $:. Aucune librairie externe. Code actuel : <script> let firstName = 'John'; let lastName = 'Doe'; let fullName = firstName + ' ' + lastName; </script> <p>{fullName}</p> Livrable attendu : Transformer la variable fullName en déclaration réactive afin qu'elle se mette à jour automatiquement.

sveltereactivesyntax+1
FondamentalSvelte

Création d'un composant Card paramétrable

Contexte : L'équipe design souhaite uniformiser l'affichage des cartes produits dans l'application. Le Problème : Le même markup est dupliqué dans plusieurs fichiers. Contraintes : Créer un composant réutilisable acceptant title et description en props. Livrable attendu : Implémenter un composant Card simple et démontrer son utilisation avec différentes valeurs passées en props.

sveltepropscomponent+1
FondamentalSvelte

Création d'un composant Toggle simple et réutilisable

Contexte : Plusieurs sections d'une application doivent pouvoir être affichées ou masquées dynamiquement. Le Problème : Aucun composant générique ne permet actuellement de gérer cet affichage conditionnel. Contraintes : Utiliser la syntaxe conditionnelle native de Svelte. Pas de dépendance externe. Livrable attendu : Implémenter un composant Toggle avec un bouton permettant d'afficher ou masquer du contenu via une variable booléenne.

sveltecomponentconditional+1
FondamentalSvelte

Création d'un système simple de filtrage en temps réel

Contexte : Une application affiche une liste statique de collaborateurs. Le Problème : Les utilisateurs souhaitent filtrer les noms via un champ de recherche dynamique. Contraintes : Utiliser la réactivité native de Svelte. Pas de librairie externe. Livrable attendu : Développer un composant permettant de filtrer dynamiquement une liste selon la valeur saisie par l'utilisateur.

sveltefilterreactivity+1
FondamentalSvelte

Implémentation d'une récupération de données au montage

Contexte : Une application doit afficher une liste d'utilisateurs provenant d'une API interne. Le Problème : Aucun mécanisme de récupération de données n'est encore implémenté. Contraintes : Utiliser onMount natif de Svelte. Pas de librairie externe. Livrable attendu : Implémenter un composant qui récupère des données au montage et les affiche dans une liste.

svelteonmountfetch+1
FondamentalSvelte

Mise en place d'un compteur de caractères dynamique

Contexte : Une équipe marketing souhaite limiter les descriptions produits à 150 caractères. Le Problème : Aucun indicateur n'informe l'utilisateur du nombre de caractères restants. Contraintes : Utiliser la réactivité native de Svelte. Pas de librairie externe. Livrable attendu : Créer un composant avec textarea affichant dynamiquement le nombre de caractères utilisés et restants.

sveltetextareareactivity+1
FondamentalSvelte

Stabilisation d'une liste dynamique avec clé manquante

Contexte : Une application interne affiche une liste de tâches récupérées depuis une variable locale. Le Problème : Lors de l'ajout ou suppression d'éléments, l'affichage devient incohérent et certains éléments semblent se mélanger. Contraintes : Vous devez corriger uniquement la gestion de la boucle each. Aucune librairie externe. Code actuel : <script> let tasks = ['A', 'B']; function addTask() { tasks = [...tasks, 'Nouvelle tâche']; } </script> {#each tasks as task} <p>{task}</p> {/each} <button on:click={addTask}>Ajouter</button> Livrable attendu : Ajouter une clé stable dans la boucle each afin d'assurer un rendu prévisible.

svelteeachkey+1
AvancéSvelte

Correction d'un two-way binding mal structuré entre composants

Contexte : Un composant enfant doit modifier une valeur passée depuis un composant parent. Le Problème : Les modifications effectuées dans l'enfant ne sont pas répercutées dans le parent. Contraintes : Utiliser correctement bind:prop entre parent et enfant. Aucune librairie externe. Code actuel : <!-- Parent.svelte --> <script> let value = ''; </script> <Child value={value} /> <!-- Child.svelte --> <script> export let value; function update() { value = 'Updated'; } </script> <button on:click={update}>Update</button> Livrable attendu : Mettre en place un binding bidirectionnel correct entre les deux composants.

sveltebindingcomponent+2
AvancéSvelte

Correction d'une condition de concurrence dans un chargement asynchrone

Contexte : Une interface Svelte charge des données selon un paramètre dynamique sélectionné par l'utilisateur. Le Problème : Lors de changements rapides du paramètre, des réponses obsolètes écrasent les données plus récentes. Contraintes : Aucune librairie externe. Utiliser uniquement fetch et la réactivité native. Code actuel : <script> import { onMount } from 'svelte'; let id; let data; $: if (id) { fetch(`/api/item/${id}`) .then(res => res.json()) .then(result => data = result); } </script> Livrable attendu : Mettre en place un mécanisme empêchant les réponses obsolètes d'écraser l'état courant.

svelteasyncracecondition+2
AvancéSvelte

Correction d'une fuite mémoire liée à un interval non nettoyé

Contexte : Un composant Svelte affiche une donnée mise à jour toutes les secondes via setInterval. Le Problème : Lors de la navigation, l'interval continue de s'exécuter en arrière-plan. Contraintes : Utiliser onMount et onDestroy. Aucune librairie externe. Code actuel : <script> import { onMount } from 'svelte'; let count = 0; onMount(() => { setInterval(() => { count += 1; }, 1000); }); </script> <p>{count}</p> Livrable attendu : Nettoyer correctement l'interval afin d'éviter toute fuite mémoire lors du démontage du composant.

sveltelifecyclememory+2
AvancéSvelte

Création d'un composant dynamique basé sur une configuration JSON

Contexte : Une équipe souhaite générer dynamiquement des champs de formulaire à partir d'une configuration JSON fournie par le backend. Le Problème : Les champs sont actuellement codés en dur dans le template. Contraintes : Utiliser la syntaxe {#each} et composants dynamiques. Aucune librairie externe. Livrable attendu : Implémenter un composant capable de générer dynamiquement des champs selon une configuration passée en props.

sveltedynamicjson+2
AvancéSvelte

Implémentation d'un composant modal avec gestion d'état global

Contexte : Plusieurs parties de l'application doivent pouvoir ouvrir une modale de confirmation centralisée. Le Problème : La logique d'ouverture et fermeture est dupliquée et difficile à maintenir. Contraintes : Utiliser un store natif Svelte pour gérer l'état global. Pas de librairie externe. Livrable attendu : Concevoir un composant Modal réutilisable contrôlé par un store partagé permettant ouverture et fermeture depuis différents composants.

sveltestoremodal+2
AvancéSvelte

Implémentation d'un système de thème global avec store dérivé

Contexte : L'application doit supporter un thème clair et sombre partagé entre plusieurs composants. Le Problème : Le thème est actuellement géré localement, provoquant des incohérences visuelles. Contraintes : Utiliser un store writable et éventuellement un store dérivé natif. Pas de librairie externe. Livrable attendu : Mettre en place un système global de gestion de thème permettant de basculer dynamiquement entre deux modes.

sveltestorederived+2
AvancéSvelte

Mise en place d'un système de pagination côté client performant

Contexte : Une application affiche une longue liste d'articles sans pagination. Le Problème : Le rendu devient lent lorsque la liste dépasse 2 000 éléments. Contraintes : Implémenter une pagination côté client sans librairie externe. Livrable attendu : Développer une logique réactive permettant d'afficher un nombre limité d'éléments par page avec navigation dynamique.

sveltepaginationperformance+2
AvancéSvelte

Optimisation d'un calcul coûteux avec store dérivé

Contexte : Une application calcule des statistiques complexes à partir d'une grande liste de données. Le Problème : Le calcul est exécuté à chaque petite modification d'état, ralentissant l'interface. Contraintes : Utiliser un store dérivé natif pour optimiser les recalculs. Livrable attendu : Refactoriser la logique afin que le calcul ne soit exécuté que lorsque les données pertinentes changent réellement.

sveltederivedperformance+2
AvancéSvelte

Optimisation d'un filtrage volumineux avec déclaration réactive

Contexte : Une application affiche plus de 5 000 enregistrements côté client avec possibilité de filtrage dynamique. Le Problème : Le filtrage est recalculé à chaque modification mineure non liée au champ de recherche, provoquant des ralentissements. Contraintes : Utiliser les déclarations réactives ($:) pour limiter les recalculs. Aucune librairie externe. Livrable attendu : Implémenter une logique de filtrage optimisée qui ne se déclenche que lorsque les dépendances pertinentes changent.

sveltereactiveperformance+2
AvancéSvelte

Stabilisation d'un store personnalisé provoquant des mises à jour incohérentes

Contexte : Vous reprenez une application Svelte utilisant un store personnalisé pour partager l'état utilisateur entre plusieurs composants. Le Problème : Lorsqu'une mise à jour est effectuée, certains composants ne se mettent pas à jour correctement ou affichent des valeurs obsolètes. Contraintes : Vous devez conserver un store writable natif de Svelte. Aucune librairie externe autorisée. Code actuel : // store.js import { writable } from 'svelte/store'; export const user = writable({ name: 'John', role: 'admin' }); // Component.svelte <script> import { user } from './store.js'; function updateName() { user.name = 'Alice'; } </script> <button on:click={updateName}>Update</button> <p>{$user.name}</p> Livrable attendu : Corriger la mise à jour du store afin de respecter le mécanisme réactif natif de Svelte.

sveltestorewritable+2
ExpertSvelte

Conception d'un moteur de formulaires dynamiques basé sur configuration JSON

Contexte : L'équipe souhaite générer dynamiquement des formulaires complexes à partir d'un schéma JSON fourni par le backend. Le Problème : Les champs et validations sont actuellement codés en dur, rendant le système peu flexible. Contraintes : Aucune librairie externe de formulaire autorisée. Utiliser composants dynamiques et stores natifs. Livrable attendu : Concevoir un moteur capable d'interpréter dynamiquement un schéma JSON, générer les champs correspondants et gérer validation et état global de manière réactive.

sveltedynamicformsvalidation+2
ExpertSvelte

Conception d'un système d'authentification sécurisé avec stores dérivés

Contexte : Une application SaaS en Svelte doit gérer une authentification basée sur JWT avec protection conditionnelle de certaines vues. Le Problème : La gestion actuelle du token est locale et expose des incohérences entre composants. Contraintes : Aucun framework externe d'authentification. Utiliser des stores natifs et éventuellement des stores dérivés. Livrable attendu : Concevoir une architecture sécurisée gérant login, logout, stockage du token, état utilisateur dérivé et protection conditionnelle de sections de l'interface.

svelteauthenticationjwt+2
ExpertSvelte

Correction d'une condition de concurrence avancée dans un store asynchrone

Contexte : Un store personnalisé charge dynamiquement des données selon un identifiant sélectionné dans l'interface. Le Problème : Lorsque l'identifiant change rapidement, les réponses réseau arrivent dans le désordre et écrasent l'état courant. Contraintes : Aucun outil externe. Utiliser uniquement les stores natifs et la gestion asynchrone JavaScript. Code actuel : import { writable } from 'svelte/store'; export const data = writable(null); export async function load(id) { const res = await fetch(`/api/item/${id}`); const result = await res.json(); data.set(result); } Livrable attendu : Implémenter un mécanisme empêchant les réponses obsolètes d'écraser les données les plus récentes.

sveltestoreasync+2
ExpertSvelte

Correction d'une fuite mémoire liée à des abonnements multiples aux stores

Contexte : Une application modulaire en Svelte utilise des abonnements manuels à plusieurs stores dans différents composants. Le Problème : Lors de la navigation entre vues, certains abonnements ne sont pas correctement nettoyés, provoquant des fuites mémoire. Contraintes : Utiliser uniquement les mécanismes natifs d'abonnement et de nettoyage. Code actuel : import { user } from './store'; let unsubscribe; onMount(() => { unsubscribe = user.subscribe(value => { console.log(value); }); }); Livrable attendu : Garantir la désinscription correcte lors du démontage du composant afin d'éviter toute fuite mémoire.

sveltestorememory+2
ExpertSvelte

Implémentation d'un système de cache intelligent avec invalidation contrôlée

Contexte : Une application consomme une API coûteuse et met en cache les réponses dans un store partagé. Le Problème : Certaines données obsolètes persistent même après modification côté serveur. Contraintes : Implémenter une stratégie d'invalidation simple sans librairie externe. Code actuel : const cache = {}; export async function fetchData(url) { if (cache[url]) { return cache[url]; } const res = await fetch(url); const data = await res.json(); cache[url] = data; return data; } Livrable attendu : Améliorer la stratégie de cache afin d'introduire une invalidation contrôlée et éviter les incohérences de données.

sveltecacheperformance+2
ExpertSvelte

Implémentation d'un système de virtualisation maison pour 50 000 éléments

Contexte : Une application doit afficher une très grande liste de données issues d'un moteur de recherche interne. Le Problème : Le rendu complet bloque l'interface et consomme trop de mémoire. Contraintes : Aucune librairie externe de virtualisation autorisée. Implémentation native requise. Livrable attendu : Concevoir un composant capable d'afficher uniquement les éléments visibles selon la position du scroll tout en conservant la hauteur totale simulée.

sveltevirtualizationperformance+2
ExpertSvelte

Mise en place d'un système multi-onglets synchronisé

Contexte : L'application doit maintenir un état utilisateur cohérent entre plusieurs onglets du navigateur. Le Problème : Une modification effectuée dans un onglet n'est pas répercutée dans les autres. Contraintes : Aucune librairie externe. Utiliser localStorage ou BroadcastChannel. Livrable attendu : Implémenter un mécanisme de synchronisation entre onglets garantissant la cohérence de l'état global.

sveltebrowserapisynchronization+2
ExpertSvelte

Optimisation avancée d'un moteur de filtrage massif avec stores dérivés

Contexte : Une plateforme interne permet de filtrer dynamiquement plus de 20 000 enregistrements. Le Problème : Le filtrage est recalculé à chaque changement d'état non pertinent, provoquant des ralentissements importants. Contraintes : Utiliser des stores dérivés natifs pour optimiser les recalculs. Aucune librairie externe. Livrable attendu : Refactoriser la logique afin que le calcul ne soit exécuté que lorsque les dépendances strictement nécessaires changent réellement.

sveltederivedperformance+2
ExpertSvelte

Refactorisation d'un monolithe Svelte vers architecture modulaire scalable

Contexte : Une application Svelte historique mélange logique métier, appels API et rendu UI dans les mêmes composants volumineux. Le Problème : Le code devient difficilement maintenable et limite l'évolution du produit. Contraintes : Aucune librairie externe. Utiliser séparation par modules et stores. Livrable attendu : Proposer une architecture modulaire claire séparant logique métier, gestion d'état et composants UI tout en maintenant la compatibilité existante.

sveltearchitecturemodularite+2
ExpertSvelte

Stabilisation d'un moteur temps réel multi-composants avec WebSocket partagé

Contexte : Une application analytique en Svelte affiche des événements temps réel dans plusieurs widgets simultanément. Le Problème : Chaque composant ouvre sa propre connexion WebSocket, provoquant une surcharge serveur et des données dupliquées. Contraintes : Vous devez utiliser uniquement les stores natifs Svelte. Aucune librairie externe autorisée. La connexion doit être mutualisée et correctement nettoyée. Code actuel : // Feed.svelte <script> import { onMount } from 'svelte'; let messages = []; onMount(() => { const socket = new WebSocket('wss://example.com/feed'); socket.onmessage = (event) => { messages = [...messages, event.data]; }; }); </script> Livrable attendu : Concevoir une architecture basée sur un store partagé garantissant une seule connexion active et une diffusion réactive vers tous les composants.

sveltewebsocketstore+2

Questions originales conçues par CodeDuel. CodeDuel n'est affilié à aucun éditeur ni organisme de certification cité ; les noms de certifications et les marques appartiennent à leurs titulaires et servent uniquement à indiquer le domaine couvert. Signaler un contenu

    Cas pratiques Svelte : 30 mises en situation | CodeDuel