--- title: Web Components slug: Web/Web_Components tags: - Composants Web translation_of: Web/Web_Components ---
{{DefaultAPISidebar("Web Components")}}{{ draft }}
Les Composants Web sont constitués de plusieurs technologies distinctes permettant de créer des composants d'interface graphique personnalisés et réutilisables, qui ont été créés en utilisant des technologies web libres. Ils font partie du navigateur, et donc ne nécessitent pas de bibliothèque externe comme jQuery ou Dojo. Un Composant Web existant peut être utilisé sans l'écriture de code, en ajoutant simplement une déclaration d'importation à une page HTML. Les Composants Web utilisent les nouvelles capacités standard de navigateur, ou celles en cours de développement.
En tant que développeurs, nous savons tous à quel point la réutilisation de code est une bonne chose. Malgré cela, historiquement, il a toujours été difficile de réutiliser les languages balisés. Prenez par exemple tous ces éléments complexes en HTML que vous avez créés et dû répéter dans vos applications avec le risque que votre code devienne incompréhensible.
Les composants Web ont pour but de résoudre ce problème et consistent en 3 technologies qui peuvent être utilisées ensemble pour créer des éléments réutilisables, encapsulés, versatiles et sans risquer une collision avec d'autre morceaux de code.
Au début de la spécification, il y avait aussi la technologie HTML Imports. Celle-ci servait à packager ses composants (CSS, JavaScript, etc.) et permettre leur intégration dans d'autres pages. Elle a néanmoins été abandonnée au profit des imports javascript qui permettent la même chose en utilisant une syntaxe plus moderne.
La description ci-dessus fonctionne assez bien à l'heure actuelle, mais cela laisse de côté plusieurs choses pour lesquelles les Composants Web pourraient être utilisés. Avec un Composant Web, vous pouvez faire presque tout ce qui peut être fait en HTML, CSS et JavaScript, et celui-ci peut devenir un élément réutilisable facilement.
Il y a parfois une certaine confusion concernant les Composants Web et Google Polymer. Polymer est un framework qui repose sur la technologie des Composants Web. Vous pouvez faire et utiliser des Composants Web sans Polymer.
Généralement, l'approche basique pour la création d'un composant Web est la suivante:
Note : Les Composants Web ne sont pas encore pleinement mis en œuvre dans tous les navigateurs, et pour les utiliser dès maintenant dans la plupart des navigateurs (janvier 2015), vous devrez probablement utiliser des polyfills (ce sont des bibliothèques JavaScript destinées à émuler des fonctionnalités qui ne sont pas encore implémentées nativement dans les navigateurs). Les polyfills sont disponibles dans le projet Google Polymer. Pour savoir quels navigateurs implémentent les Composants Web, voir Are We Componentized Yet?
Les spécifications des Composants Web définissent les éléments suivants :
/deep/
.Les capacités des Web Components sont désactivées par défaut dans Firefox. Pour les activer, allez sur la page about:config
et rejetez toutes les alertes qui apparaissent. Cherchez ensuite la préférence nommée dom.webcomponents.enabled, et changez la à true par un double clic.
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName('Custom Elements', "", "")}} | {{Spec2('Custom Elements')}} | |
{{SpecName('HTML WHATWG','/scripting-1.html#the-template-element','template element')}} | {{Spec2('HTML WHATWG')}} | Pas de changement |
{{SpecName('HTML5 W3C','/scripting-1.html#the-template-element','template element')}} | {{Spec2('HTML5 W3C')}} | Définition initiale |
{{SpecName('Shadow DOM', "", "")}} | {{Spec2('Shadow DOM')}} | |
{{SpecName('HTML Imports', "", "")}} | {{Spec2('HTML Imports')}} | |
{{SpecName("CSS Scope", "", "")}} | {{Spec2('CSS Scope')}} |