Deci, putem repara operatorul de atribuire? Putem scrie doar:
UI <= view (application_state)
In loc sa faceti o copie unica, asa cum o face operatorul „=”? (Unde „<=” stabileste o relatie intre „UI” si aplicatia „view” la „application_state”.) Din pacate, nu avem un astfel de operator in JavaScript.
Ne-am putea intreba, este chiar posibil sa existe un operator de egalitate izomorfa? Raspuns scurt: da. Aplicatiile pentru foi de calcul precum Microsoft Excel inteleg corect despre ce este vorba despre operatorul de egalitate. Cred cu tarie ca din acest motiv specific Excel este unul dintre cele mai de succes produse software din toate timpurile. Deoarece in foile de calcul, se poate spune doar:
C100 = SUMA (B2: B99) / A1
In Excel, semnul egal stabileste o relatie adecvata, in care „C100” va urma orice modificare care se intampla in coloana „B” sau „A1”. Minunat, nu? Solutia pentru o programare adecvata a fost deja in mijlocul nostru de zeci de ani!
„Programarea functionala reactiva” este disciplina care aplica principiul reactiei la schimbarile de date in campul de programare. Cu toate acestea, majoritatea abordarilor existente sunt un pic greoaie in sensul ca exprima relatiile ca fluxuri (care are utilizarile sale!). Practic, este pentru oameni mult mai destepti decat mine. Dar, din pacate, directia este buna si face treaba. In bibliotecile FRP existente, cum ar fi RxJS sau BaconJS, se pot exprima relatii intre date precum:
nrOfLikes = twitterFavoritesStream.combine (faceBookLikesStream, (t, f) => t + f);
Dar, putem face mai bine decat asta? Putem lasa majoritatea pufului si sa observam expresii in loc de fluxuri, ca in Excel? Da putem! Folosind o tehnica numita „Programare functionala reactiva transparenta”. Punctul unic de vanzare al TFRP este ca relatiile inter-date sunt gestionate automat ori de cate ori este evaluata o expresie. Aceasta tehnica a fost deja aplicata cu succes in cadre precum Knockout si Meteorjs.
Biblioteca MobX autonoma este conceputa pentru a valorifica principiile TFRP pentru a crea relatii izomorfe intre expresii si structuri de date care vor rezista testului timpului.
jovencitas pilladas masturbandose pelisxxx
me gusta follar maduras corriendose
trios gays tv porno
super tetudas vidios xxx
sexo romantico coñitos
españolas follando en la playa pilladas desnudas
nonude model videoxxx
porno violacion gay videos travestis
follando en casa penes grandes
se folla a su hijo scat porno
porno guarras españolas porno trans
videos pornos caseros reales gitana follando
follando sin querer madres incestuosas
videos x incesto peliculas eroticas gratis
guarras.com abuelas follando
viejas calientes pajas caseras
maduras corriendose naomi woods
incesto real madre hijo porno casero españa
peliculas porno traducidas al castellano madre pajea a su hijo
videos de investo maduras.com
Deci, de fapt:
Exista un echivalent sintactic al „value <= expr”,
si anume: „value = mobx.computed (() => expr)”.
“In nici un caz! Vreau sa incerc asta! ”. Bine. Ma bucur ca ai intrebat; doar deschideti un terminal intr-un director gol si copiati-lipiti urmatoarea comanda pentru a incepe (presupunand ca aveti instalate nodejs):
Deschideti MOBservable intr-un REPL
Iata! Mediul dvs. JavaScript cu MobX preincarcat. Acum, tastati (sau copiati-lipiti):
Crearea starii aplicatiei care este reactiva si o functie de vizualizare care raspunde automat la aceasta
Rularea acestor comenzi produce urmatoarea iesire (unde fiecare linie noua este vizualizarea dupa o tranzitie de stare):
Vizualizarile care sunt generate pentru primele cinci tranzitii de stare
Exista cateva lucruri importante de remarcat aici. In primul rand, nu am fortat iesirea sa fie actualizata oriunde. A fost doar un efect al schimbarii datelor noastre. In al doilea rand, modificarile au fost procesate atomic; numarul de participanti s-a potrivit intotdeauna cu lista de participanti. Nu s-au redat rezultate intermediare (si da, randarea a fost tiparita sincron). Si nu in ultimul rand, chiar schimbarea „nrOfSeats” a provocat o redare, desi este utilizata doar indirect de functia noastra de „vizualizare”. Si a functionat pentru scalare, expresii functionale si matrice.
Deci, asta incheie introducerea calatoriei mele pentru a gasi o functie de redare pura, care functioneaza in prezenta schimbarilor de stare, fara a fi fortat sa scrie tone de cazan. A dat nastere ideilor din spatele MobX; ideile existente, reaplicate. S-ar putea sa arate ca magie in acest moment, dar bine, abstractiile de astazi sunt boilerpalte de maine.
Intr-o postare de blog viitoare, voi aplica mecanismul de redare asa cum se arata in demonstratie in cadrul ReactJS, pentru a va arata cum sa creati componente React care functioneaza extrem de bine si sa raspunda automat la modificarile de date. Asadar, fiti atenti si faceti o previzualizare rapida la demo-ul JSFiddle sau la aplicatia TodoMVC construita folosind ReactJS si MobX. S-ar putea sa fiti, de asemenea, interesat de analiza aprofundata a performantelor ReactJS si observabile despre care am bloguit mai devreme.
Simtiti-va liber sa lasati un comentariu sau sa va alaturati discutiei despre discordie.








