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âŠ)