Si vous venez de React ou de Vue, les premiers jours dans $mol se passent à chercher des choses qui n'existent pas : computed, watch, useEffect, onMounted, un fetch dans un hook de cycle de vie. Elles ne sont pas cachées quelque part dans l'API ; le modèle n'a pas de place pour elles. Cette page est la version en cinq minutes de ce modèle. Lisez-la avant Vues, et revenez-y quand un nom familier manque à l'appel.
Rien n'est calculé tant que personne ne le lit. Une vue se rend en lisant ses propriétés ; chaque propriété lit ce dont elle a besoin ; la chaîne de dépendances s'assemble toute seule à partir de ces lectures. Il n'y a pas d'abonnement à déclarer ni de watch à enregistrer : la lecture est l'abonnement.1$my_profile$mol_view2 sub /3<= Name $mol_view4 sub /<= name \1namespace $.$${2export class $my_profileextends$.$my_profile{3@ $mol_mem4user(){5return this.$.$mol_fetch.json('https://api.example.com/me')as{name:string}6}7name(){8return this.user().name9}10}11}Rendre Name lit name(), name() lit user(), user() va sur le réseau. Personne n'a parlé de la requête à la vue et personne n'a parlé de la vue à la requête. Quand user() change, tout ce qui l'a lu se recalcule, et rien d'autre.
Il n'y a pas de mounted, pas de useEffect, pas de created. On demande des données en lisant une propriété, et une vue lit ses propriétés quand elle se rend. L'exemple ci-dessus charge donc l'utilisateur au moment où $my_profile apparaît à l'écran, et pas avant. Quand la vue quitte l'écran, plus personne ne lit user(), et la cellule est libérée en même temps que la vue.Voilà tout ce qui remplace le motif « fetch on mount » : la vue demande ce dont elle a besoin, et le framework décide quand demander. Le chargement n'est pas accroché à un événement de page, il est accroché au fait d'être visible.
Une seule méthode avec un argument optionnel est à la fois getter, setter, valeur calculée et état :1@ $mol_mem2count(next?:number){3return next??04}Appelée sans argument elle lit, appelée avec un argument elle écrit. @ $mol_mem transforme la méthode en une cellule mise en cache qui se recalcule quand une valeur qu'elle a lue a changé. Une valeur calculée n'est qu'une méthode @ $mol_mem qui lit d'autres méthodes. Pas besoin de watcher : un effet de bord appartient à un événement, et un gestionnaire d'événement est une méthode marquée @ $mol_action.1@ $mol_mem2doubled(){3return this.count()*24}56@ $mol_action7increment(){8this.count(this.count()+1)9}Modifier cette page sur GitHubÉtait-ce utile ?OuiNonPrécédentIntroductionSuivantDémarrageSur cette pageTirer plutôt que pousserPas de cycle de vieUne propriété est une celluleDu code synchrone qui attendTout est une redéfinitionComment lire les sourcesLes nomsSuiteType to search the documentation.