حالات تطبيقية في Web Components

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

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

أساسيWeb Components

Correction d'un composant non enregistré correctement

Contexte : Un composant personnalisé ne s'affiche pas correctement dans le DOM. Le Problème : L'élément n'est pas reconnu par le navigateur. Contraintes : Utiliser customElements.define correctement. Code actuel : class MyCard extends HTMLElement {} // oubli d'enregistrement Livrable attendu : Corriger le code afin d'enregistrer correctement le composant personnalisé.

webcomponentscustomelementsregistration+1
أساسيWeb Components

Création d'un badge dynamique stylisé

Contexte : Une application affiche des statuts utilisateurs (actif, inactif, en attente). Le Problème : Les badges sont codés manuellement avec duplication de style. Contraintes : Utiliser un Web Component avec Shadow DOM pour encapsuler le style. Livrable attendu : Développer un composant <status-badge> acceptant un attribut status et adaptant son style en conséquence.

webcomponentsshadowdomcomponent+1
أساسيWeb Components

Création d'un composant carte produit simple

Contexte : Une page e-commerce affiche plusieurs produits avec la même structure HTML. Le Problème : Le code est dupliqué pour chaque produit. Contraintes : Utiliser Custom Elements natifs. Aucun framework. Livrable attendu : Créer un composant <product-card> acceptant titre et prix via attributs et affichant une structure standardisée.

webcomponentscustomelementscomponent+1
أساسيWeb Components

Création d'un composant compteur interactif

Contexte : Une application doit afficher un compteur simple pouvant être incrémenté par l'utilisateur. Le Problème : Aucun composant réutilisable n'existe pour cette fonctionnalité. Contraintes : Utiliser uniquement Custom Elements et JavaScript natif. Livrable attendu : Développer un composant <counter-widget> affichant un nombre et un bouton permettant l'incrémentation.

webcomponentsjavascriptcustomelements+1
أساسيWeb Components

Création d'un composant input encapsulé

Contexte : Une application doit standardiser ses champs input avec un style cohérent. Le Problème : Les champs sont stylisés différemment selon les pages. Contraintes : Utiliser Shadow DOM pour encapsuler le style. Livrable attendu : Créer un composant <app-input> encapsulant un champ input avec style interne et gestion simple de valeur.

webcomponentsshadowdominput+1
أساسيWeb Components

Création d'un composant personnalisé d'alerte réutilisable

Contexte : Une application interne affiche régulièrement des messages d'information ou d'erreur dans différentes pages. Le Problème : Les blocs HTML sont copiés-collés partout, rendant la maintenance difficile. Contraintes : Utiliser uniquement les Web Components natifs (Custom Elements). Aucun framework autorisé. Livrable attendu : Créer un composant personnalisé <app-alert> capable d'afficher un message passé via attribut et réutilisable dans plusieurs pages.

webcomponentscustomelementscomponent+1
أساسيWeb Components

Encapsulation de style via Shadow DOM simple

Contexte : Un composant bouton personnalisé entre en conflit avec les styles globaux du site. Le Problème : Les styles CSS globaux écrasent le design du bouton. Contraintes : Utiliser Shadow DOM natif pour encapsuler les styles. Aucun framework. Code actuel : class MyButton extends HTMLElement { connectedCallback() { this.innerHTML = `<button class="btn">Click</button>`; } } customElements.define('my-button', MyButton); Livrable attendu : Refactoriser le composant pour utiliser attachShadow et encapsuler ses styles.

webcomponentsshadowdomstyle+1
أساسيWeb Components

Gestion simple d'événements personnalisés

Contexte : Un composant doit notifier le parent lorsqu'une action interne se produit. Le Problème : Aucun mécanisme de communication n'est en place. Contraintes : Utiliser CustomEvent natif. Livrable attendu : Implémenter un événement personnalisé dispatché par le composant et capturable par le parent.

webcomponentscustomeventevents+1
أساسيWeb Components

Observation d'attributs dans un composant personnalisé

Contexte : Un composant doit afficher dynamiquement une valeur passée via attribut HTML. Le Problème : La modification de l'attribut ne met pas à jour le contenu affiché. Contraintes : Utiliser observedAttributes et attributeChangedCallback. Code actuel : class UserCard extends HTMLElement { connectedCallback() { this.innerHTML = `<p>${this.getAttribute('name')}</p>`; } } customElements.define('user-card', UserCard); Livrable attendu : Implémenter la gestion correcte des attributs afin que le composant se mette à jour dynamiquement.

webcomponentsattributescustomelements+1
أساسيWeb Components

Utilisation d'un template HTML dans un Web Component

Contexte : Un composant personnalisé contient du HTML complexe difficile à maintenir dans une string JavaScript. Le Problème : Le code HTML intégré dans innerHTML devient illisible. Contraintes : Utiliser la balise <template> native HTML. Livrable attendu : Refactoriser le composant pour cloner un template défini dans le document et l'injecter dans le Shadow DOM.

webcomponentstemplateshadowdom+1
متقدمWeb Components

Communication bidirectionnelle entre composants Web

Contexte : Deux composants Web doivent interagir (ex: un filtre et une liste de résultats). Le Problème : Aucune stratégie de communication claire n'est définie. Contraintes : Utiliser uniquement des événements personnalisés natifs. Livrable attendu : Mettre en place une communication propre entre deux composants via CustomEvent et écoute d'événements.

webcomponentseventscommunication+2
متقدمWeb Components

Conception d'un composant modal encapsulé avec gestion d'état interne

Contexte : Une application doit afficher une modale réutilisable dans plusieurs pages sans dépendre d'une librairie externe. Le Problème : Les implémentations actuelles dupliquent la logique d'ouverture et de fermeture. Contraintes : Utiliser Custom Elements et Shadow DOM natif. Gérer l'état interne du composant. Livrable attendu : Créer un composant <app-modal> capable d'ouvrir et fermer dynamiquement son contenu via méthode publique (open, close) tout en encapsulant son style.

webcomponentsshadowdommodal+2
متقدمWeb Components

Création d'un composant carte produit dynamique avec template cloné

Contexte : Une page e-commerce doit générer dynamiquement plusieurs cartes produits. Le Problème : Le HTML est injecté via innerHTML rendant le code difficile à maintenir. Contraintes : Utiliser la balise <template> et Shadow DOM. Livrable attendu : Implémenter un composant <product-card> clonant un template et acceptant des attributs dynamiques.

webcomponentstemplateshadowdom+2
متقدمWeb Components

Création d'un composant formulaire encapsulé avec validation interne

Contexte : Une application souhaite encapsuler un champ email avec validation intégrée. Le Problème : La validation est actuellement gérée globalement et non par composant. Contraintes : Utiliser Shadow DOM et CustomEvent pour exposer l'état. Livrable attendu : Développer un composant <email-input> validant son contenu et dispatchant un événement en cas d'erreur ou succès.

webcomponentsformvalidation+2
متقدمWeb Components

Encapsulation d'un composant interactif avec état interne réactif

Contexte : Une application souhaite créer un composant toggle réutilisable. Le Problème : L'état (on/off) n'est pas correctement synchronisé avec l'attribut HTML. Contraintes : Utiliser Custom Elements natifs avec gestion interne d'état. Livrable attendu : Développer un composant <toggle-switch> capable de gérer son état interne, refléter les changements via attribut et émettre un événement personnalisé.

webcomponentsstateattributes+2
متقدمWeb Components

Gestion avancée des slots dynamiques dans un composant layout

Contexte : Une équipe souhaite créer un composant layout réutilisable avec header, content et footer personnalisables. Le Problème : Le composant actuel ne supporte pas correctement l'injection de contenu structuré. Contraintes : Utiliser <slot> et éventuellement named slots natifs. Livrable attendu : Concevoir un composant <app-layout> utilisant des slots nommés permettant l'injection flexible de contenu.

webcomponentsslotsshadowdom+2
متقدمWeb Components

Implémentation d'un composant avec cycle de vie complet

Contexte : Un composant doit réagir à son insertion et suppression du DOM. Le Problème : Les ressources internes (listeners, timers) ne sont pas correctement nettoyées. Contraintes : Utiliser connectedCallback et disconnectedCallback. Livrable attendu : Concevoir un composant gérant correctement son cycle de vie et nettoyant ses ressources à la destruction.

webcomponentslifecyclecleanup+2
متقدمWeb Components

Implémentation d'un composant liste dynamique avec gestion d'événements

Contexte : Une application doit afficher une liste d'éléments interactifs pouvant être supprimés individuellement. Le Problème : La logique d'écoute d'événements est dupliquée et non encapsulée. Contraintes : Utiliser uniquement Web Components natifs et CustomEvent pour communication externe. Livrable attendu : Développer un composant <dynamic-list> capable d'ajouter et supprimer des éléments tout en émettant des événements personnalisés.

webcomponentseventscustomevent+2
متقدمWeb Components

Optimisation d'un composant avec Shadow DOM et styles partagés

Contexte : Plusieurs composants Web utilisent chacun leur Shadow DOM avec styles dupliqués. Le Problème : La duplication des styles rend la maintenance complexe. Contraintes : Utiliser des constructeurs de style partagés (CSSStyleSheet si supporté) ou une stratégie centralisée. Livrable attendu : Refactoriser les composants afin de mutualiser les styles tout en conservant l'encapsulation Shadow DOM.

webcomponentsshadowdomstyles+2
متقدمWeb Components

Synchronisation réactive d'attributs et propriétés dans un composant personnalisé

Contexte : Vous développez un composant <user-profile> utilisé dans plusieurs parties d'une application interne. Le Problème : Lorsque la propriété JavaScript est modifiée dynamiquement (element.name = "Alice"), le rendu ne se met pas à jour car seule la lecture initiale des attributs est implémentée. Contraintes : Utiliser uniquement Web Components natifs (Custom Elements, observedAttributes). Aucun framework. Code actuel : class UserProfile extends HTMLElement { connectedCallback() { this.render(); } render() { this.innerHTML = `<p>${this.getAttribute('name')}</p>`; } } customElements.define('user-profile', UserProfile); Livrable attendu : Implémenter une synchronisation complète entre attributs et propriétés afin que toute modification déclenche un rendu cohérent.

webcomponentsattributesproperties+2
خبيرWeb Components

Architecture d'un système de composants Web modulaires interconnectés

Contexte : Vous devez concevoir un mini design system interne basé uniquement sur Web Components natifs. Le Problème : Les composants existants communiquent mal entre eux et partagent implicitement de la logique globale, ce qui rend l'application difficile à faire évoluer. Contraintes : Utiliser exclusivement Custom Elements, Shadow DOM et CustomEvent. Aucun framework autorisé. Livrable attendu : Proposer une architecture modulaire claire permettant la communication entre composants via événements personnalisés, tout en garantissant isolation et réutilisabilité.

webcomponentsarchitecturecustomevent+2
خبيرWeb Components

Conception d'un système de routing minimaliste avec Web Components

Contexte : Une application SPA légère doit changer de vue sans framework. Le Problème : Les vues sont statiques et ne répondent pas aux changements d'URL. Contraintes : Utiliser History API et Custom Elements uniquement. Livrable attendu : Implémenter un système minimaliste de routing permettant d'afficher dynamiquement différents composants selon l'URL.

webcomponentsroutingspa+2
خبيرWeb Components

Conception d'un système de theming dynamique compatible Shadow DOM

Contexte : Une application doit supporter plusieurs thèmes (clair, sombre) avec composants encapsulés en Shadow DOM. Le Problème : Les styles globaux ne pénètrent pas dans le Shadow DOM, empêchant l'application du thème. Contraintes : Utiliser Custom Properties CSS et Shadow DOM natif. Livrable attendu : Concevoir une stratégie de theming compatible Shadow DOM permettant changement dynamique de thème sans casser l'encapsulation.

webcomponentsshadowdomtheming+2
خبيرWeb Components

Création d'un composant data-driven avec mutation observer

Contexte : Un composant doit réagir à des modifications dynamiques de son contenu enfant. Le Problème : Les changements internes ne déclenchent aucun rendu ou adaptation. Contraintes : Utiliser MutationObserver natif. Livrable attendu : Implémenter un composant capable d'observer ses changements internes et d'adapter dynamiquement son rendu.

webcomponentsmutationobserverreactivity+2
خبيرWeb Components

Gestion avancée des propriétés complexes avec réflexion d'attributs

Contexte : Un composant reçoit des données complexes (objet JSON) via propriété JavaScript. Le Problème : Les données ne sont pas correctement synchronisées avec les attributs HTML et le rendu. Contraintes : Implémenter un système de réflexion propriété-attribut cohérent. Livrable attendu : Concevoir une gestion robuste permettant synchronisation bidirectionnelle entre propriétés complexes et rendu interne.

webcomponentspropertiesattributes+2
خبيرWeb Components

Gestion avancée du cycle de vie avec ressources asynchrones

Contexte : Un composant charge des données via fetch et démarre un interval interne. Le Problème : Lorsqu'il est retiré du DOM, les requêtes et timers continuent de fonctionner. Contraintes : Utiliser connectedCallback et disconnectedCallback proprement. Livrable attendu : Implémenter une gestion complète du cycle de vie incluant nettoyage des listeners, timers et opérations asynchrones.

webcomponentslifecycleasync+2
خبيرWeb Components

Implémentation d'un composant formulaire composite avec validation distribuée

Contexte : Une application doit créer un formulaire composé de plusieurs Web Components enfants. Le Problème : Chaque champ gère sa validation mais aucune stratégie globale ne centralise l'état du formulaire. Contraintes : Utiliser uniquement CustomEvent pour communication entre composants. Livrable attendu : Concevoir un composant parent capable d'écouter les événements de validation des enfants et d'agréger l'état global du formulaire.

webcomponentsformvalidation+2
خبيرWeb Components

Implémentation d'un moteur de rendu interne avec mise à jour optimisée

Contexte : Un composant complexe met à jour son innerHTML à chaque modification d'état. Le Problème : Chaque mise à jour reconstruit entièrement le DOM interne, entraînant perte d'événements et performances dégradées. Contraintes : Utiliser Web Components natifs sans librairie de virtual DOM. Code actuel : class CounterBox extends HTMLElement { constructor() { super(); this.count = 0; } connectedCallback() { this.render(); } render() { this.innerHTML = `<button>+</button><p>${this.count}</p>`; } } customElements.define('counter-box', CounterBox); Livrable attendu : Refactoriser le composant pour éviter la reconstruction complète du DOM à chaque mise à jour et préserver les performances.

webcomponentsperformancedom+2
خبيرWeb Components

Isolation avancée et communication cross-shadow sécurisée

Contexte : Plusieurs composants encapsulés en Shadow DOM doivent échanger des informations. Le Problème : Les événements ne traversent pas correctement les frontières Shadow DOM ou provoquent des effets inattendus. Contraintes : Utiliser CustomEvent avec options bubbles et composed. Livrable attendu : Implémenter une communication fiable entre composants encapsulés en Shadow DOM tout en respectant l'isolation.

webcomponentsshadowdomcustomevent+2
خبيرWeb Components

Optimisation des styles partagés via Constructable Stylesheets

Contexte : Plusieurs composants Web utilisent les mêmes styles internes, dupliqués dans chaque Shadow DOM. Le Problème : La duplication des styles augmente la mémoire consommée et complique la maintenance. Contraintes : Utiliser Constructable Stylesheets si supporté par le navigateur. Livrable attendu : Refactoriser les composants afin de partager dynamiquement une feuille de style unique entre plusieurs Shadow DOM.

webcomponentsshadowdomstylesheets+2

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

    Cas pratiques Web Components : 30 mises en situation | CodeDuel