Maintenant que vous maîtrisez le JavaScript moderne, voyons comment construire une application front rapidement !
- Un composant dynamique commun
- Une étiquette pour les templates
- Nos premiers composants interactifs
- Remonter les informations
Un composant dynamique commun
Avant de construire nos composants personnalisés, il est important de formaliser leur fonctionnement.
On va donc créer une class
commune pour structurer tout cela et faciliter le développement futur :
Nos composants héritant de cette class
seront donc automatiquement mis à jour en cas de changement de valeur d’un attribut !
Et puisqu’on y est, gérons aussi les styles !
Si vous avez besoin d’un composant plus puissant, je vous recommande LitElement
qui mettra à jour les valeurs de façon plus efficace et permet d’utiliser des templates plus complets.
Une étiquette pour les templates
Comme on utilisera des template literals dans nos composants, il peut être utile de faciliter l’injection de valeurs.
On a d’ailleurs préparé le terrain en évaluant le JSON dans les attributs dans la méthode attributeChangedCallback
plus haut.
Automatisons donc tout cela dans nos templates avec un tag dédié :
On pourra alors injecter des objets directement dans un template :
const valeur = 42
const objet = { foo: 'bar' }
const template = html`<mon-composant valeur="${valeur}" attribut="${objet}"></mon-composant>`
Si vous avez besoin d’un système de template plus complet (ou que vous utilisez LitElement
) je vous recommande de jeter un œil à lit-html
, qui fournit une fonction du même style bien plus puissante.
Nos premiers composants interactifs
C’est parti pour commencer à avoir une application digne de ce nom !
La racine de l’application
C’est le composant de base, celui qui va s’occuper de charger le plus gros de l’application et d’en gérer le fonctionnement global.
On va commencer léger, en affichant nos listes (qui sont pour l’instant au très grand nombre de… zéro 😁) et un formulaire pour en créer une (via un composant dédié).
Notez l’utilisation du pseudo-sélecteur :host
pour styliser notre composant, au lieu d’utiliser le nom de la balise : le CSS étant lui-aussi séparé de celui de la page.
La création de liste
Remonter les informations
Maintenant que les informations voyagent dans un sens, il serait temps de les faire passer dans l’autre sens pour les propager… avec des événements !
Par exemple, pour la création d’une liste :
On peut alors récupérer l’événement plus haut :
Et voilà, on a maintenant une belle todo-list !