Wenn du von React oder Vue kommst, verbringst du die ersten Tage in $mol damit, nach Dingen zu suchen, die es nicht gibt: computed, watch, useEffect, onMounted, ein fetch in einem Lifecycle-Hook. Sie sind nicht irgendwo in der API versteckt; das Modell hat keinen Platz für sie. Diese Seite ist die Fünf-Minuten-Fassung dieses Modells. Lies sie vor Views und komm zurück, wenn ein vertrauter Name fehlt.
Nichts wird berechnet, bevor es jemand liest. Eine View rendert, indem sie ihre Eigenschaften liest; jede Eigenschaft liest, was sie braucht; die Abhängigkeitskette setzt sich aus diesen Lesevorgängen von selbst zusammen. Es gibt kein Abonnement zu deklarieren und kein watch zu registrieren: Das Lesen ist das 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}Name zu rendern liest name(), name() liest user(), user() geht ins Netz. Niemand hat der View von der Anfrage erzählt und niemand der Anfrage von der View. Ändert sich user(), berechnet sich alles neu, was es gelesen hat — und sonst nichts.
Es gibt kein mounted, kein useEffect, kein created. Daten werden angefordert, indem eine Eigenschaft gelesen wird, und eine View liest ihre Eigenschaften, wenn sie rendert. Das Beispiel oben lädt den Benutzer also genau in dem Moment, in dem $my_profile auf dem Bildschirm erscheint, und keinen Augenblick früher. Verlässt die View den Bildschirm, liest niemand mehr user(), und die Zelle wird zusammen mit der View freigegeben.Das ist der komplette Ersatz für das Muster „fetch on mount": Die View fragt nach dem, was sie braucht, und das Framework entscheidet, wann gefragt wird. Das Laden hängt nicht an einem Seitenereignis, sondern daran, sichtbar zu sein.
Eine einzige Methode mit einem optionalen Argument ist zugleich Getter, Setter, berechneter Wert und Zustand:1@ $mol_mem2count(next?:number){3return next??04}Ohne Argument aufgerufen liest sie, mit einem Argument schreibt sie. @ $mol_mem macht aus der Methode eine zwischengespeicherte Zelle, die neu rechnet, wenn sich etwas geändert hat, das sie gelesen hat. Ein berechneter Wert ist einfach eine @ $mol_mem-Methode, die andere Methoden liest. Einen Watcher braucht es nicht: Ein Seiteneffekt gehört zu einem Ereignis, und ein Ereignis-Handler ist eine mit @ $mol_action markierte Methode.1@ $mol_mem2doubled(){3return this.count()*24}56@ $mol_action7increment(){8this.count(this.count()+1)9}Diese Seite auf GitHub bearbeitenWar das hilfreich?JaNeinZurückEinführungWeiterErste SchritteAuf dieser SeitePull statt PushKein LebenszyklusEine Eigenschaft ist eine ZelleSynchroner Code, der wartetAlles ist eine ÜberschreibungWie man die Quellen liestNamenWeiterType to search the documentation.