Cela fait des années que l'on entend parler des Web components, mais ils sont aujourd'hui encore peu utilisés dans notre écosystème.
En effet, ils sont souvent écartés par méconnaissance ou par la peur de se confronter à un nième framework qui remplacera encore une fois le code des applications existantes qu'on vient juste de refondre.
Cependant, il faut plutôt voir les Web components comme complémentaire aux technologies que nous utilisons tous les jours et ce pour répondre à des problématiques bien précises.
De plus désormais il existe une pléthore d'outils facilitant leur mise en place, et leur intégration à des applications existantes. Alors pourquoi s'en passer ?
Je vous propose dans ce slot de voir ensemble ce que sont concrètement les web components, et d'illustrer leur usage avec un cas concret en utilisant Stenciljs.
5. PRÉSENTATION
● Créé par Ionic sortie en 2017 latest : 2.1.0
● Compilateur de Web components
● Inspiré par Angular et React
● But premier : library de composants
● Peut être utilisé comme un framework
5
6. ● API haut niveau avec TypeScript
● Shadow DOM et fallback scoped style si non supporté
● Build customisable qui génère un bundle
● Inclus des polyfills
● Style via le standard CSS
○ Custom Properties
○ Shadow Parts
PRÉSENTATION
6
10. ADOPTONS-LES
● Aujourd’hui la technologie est mature
● Le but n’est pas de remplacer nos frameworks
● Idéal pour créer une library de components
● Au final idéal pour créer des components UI...
● … et réduire le coût des migrations futures
10
Sondage support IE
Sondage connaissance des Web Components
Isolation du composant
https://developer.mozilla.org/fr/docs/Web/API/ShadowRoot/mode
https://blog.revillweb.com/open-vs-closed-shadow-dom-9f3d7427d1af
Isolation du composant
https://developer.mozilla.org/fr/docs/Web/API/ShadowRoot/mode
https://blog.revillweb.com/open-vs-closed-shadow-dom-9f3d7427d1af
npm init stencil
npm install
npm start
npm link
importer dans un projet react simple
démontrer le problème d’input
Shadow DOM et fallback scoped style si non supporté
Ajouter un bouton material
https://github.com/material-components/material-components-web-components
S’abonner à l’événement click avec un EventEmitter
https://custom-elements-everywhere.com/