Cette section décrit un ensemble des standards actuels pour les âweb componentsâ.
Encore aujourdâhui, ces standards sont toujours en développement. Quelques fonctionnalités sont bien supportées/intégrées dans les conventions HTML/DOM moderne, tandis que dâautres sont toujours au stade dâébauches. Vous pouvez essayer les différents exemples dans nâimporte quel navigateur, tout en gardant à lâesprit que Google Chrome est probablement le plus avancé en ce qui concerne lâintégration de ces fonctionnalités⦠Probablement car ce sont les développeurs de chez Google qui ont travaillé sur beaucoup de ces dites fonctionnalités.
Rien de nouveau à lâhorizonâ¦
Lâidée même de composant nâa rien de nouveau : ils sont déjà utilisés, entre autre, dans beaucoups de frameworks.
Avant de parler des détails techniques, prenons un instant pour contempler lâune des plus grande réussite de lâhumanité :
Voici la Station Spatiale Internationale (ISS pour les intimes).
Et voilà comment câest fait à lâintérieur (plus ou moins):
La Station Spatiale Internationale :
- Repose sur beaucoup de composants.
- Chaque composant, à son tour, repose sur encore plus de petits éléments.
- Les composants sont donc très complexe, bien plus complexe que la plupart des sites web.
- Ces composants sont développés internationalement, par des équipes venant de pays différents, parlant différents langagesâ¦
â¦Et ce machin vole, mieux encore : il garde des humains en vie dans lâespace !
Comment sont fabriqués des engins aussi complexes ?
Quels principes pourrions-nous emprunter pour rendre notre développement de même niveau fiable et évolutif ? Ou, du moins, à sâen rapprocher ?
Lâarchitecture des composants web
La règle dâor pour développer des programmes compliqués est : ne pas faire de programmes compliqués.
Si quelque chose devient trop complexe â divisez le problème en parties plus abordables et assemblez-les de la manière la plus naturelle possible.
Le bon architecte est celui qui arrive à simplifier ce qui est compliqué.
On peut diviser les interfaces utilisateur en plusieurs composants visuels : chacun dâeux a ainsi sa propre place sur la page, peut exécuter une tâche bien définie et diffère des autres.
Regardons par exemple Twitter.
Nous pouvons facilement isoler plusieurs composants :
- Navigation.
- Information utilisateur.
- Suggestions.
- Formulaire dâenvoi.
- (et enfin 6, 7) â messages.
Les composants peuvent avoir des sous-composants, par exemple les messages : ils peuvent faire partie du composant plus général âliste des messagesâ. Une photo de profil cliquable peut elle-même être un composant et ainsi de suite.
Comment définir ou décider de ce qui doit être un composant ? Tout est question dâintuition, dâexpérience et de sens commun. Généralement, câest un élément visuel distinct, que lâon peut décrire en fonction de ce quâil fait et de comment il interagit avec la page. Pour lâexemple ci-dessus, la page a des blocs, et chacun dâentre eux jouent leur propre rôle : il devient ainsi logique de les définir en tant que composant.
Un composant contient :
- Sa propre classe JavaScript.
- Sa structure du DOM, gérée seulement par sa classe : le code exterieur nây aura pas accès (câest le principe âdâencapsulationâ).
- Son style CSS, qui sera appliqué à ce composant seulement.
- Son API : les évenements, les méthodes de classe, ect, pour lui permettre dâinteragir avec les autres composants.
Encore une fois, un composant nâa rien de spécial.
Il existe déjà beaucoup de frameworks et de méthode de développement pour en construire, chacun dâeux ayant leur propres avantages. Généralement, ce sont des classes et des conventions spéciales qui sont utilisées en CSS pour reproduire lâimpression dâutiliser des composants â le âCSS scopingâ et lâencapsulation du DOM.
Les composants web proposent maintenant des outils intégrés au navigateur pour cela, nous nâavons plus besoin de les simuler :
- Custom elements â pour définir les customs elements.
- Shadow DOM â pour créer un DOM interne au composant, inaccessible aux autres.
- CSS Scoping â pour définir des styles qui sâappliquent seulement à lâinterieur du Shadow DOM du composant.
- Event retargeting â et dâautres petites choses pour rendre nos composants encore plus facile à développer.
Dans le prochain chapitre nous allons voir les détails des âCustom Elementsâ â les fondamentaux et les fonctionnalitées déjà bien intégrées des composants web, qui se suffisent à eux-mêmes.
Commentaires
<code>, pour plusieurs lignes â enveloppez-les avec la balise<pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepenâ¦)