🌐 AIæœçŽą & 代理 䞻饔
17 octobre 2022

Prenons un peu de recul

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 :

  1. Navigation.
  2. Information utilisateur.
  3. Suggestions.
  4. Formulaire d’envoi.
  5. (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.

Carte du tutoriel

Commentaires

lire ceci avant de commenter

  • Si vous avez des amĂ©liorations Ă  suggĂ©rer, merci de soumettre une issue GitHub ou une pull request au lieu de commenter.
  • Si vous ne comprenez pas quelque chose dans l'article, merci de prĂ©ciser.
  • Pour insĂ©rer quelques bouts de code, utilisez la balise <code>, pour plusieurs lignes – enveloppez-les avec la balise <pre>, pour plus de 10 lignes - utilisez une sandbox (plnkr, jsbin, codepen
)