Przeczytałem docs i spojrzałem na source behind reactivity, ale nie rozumiem tego.Jak reaktywność Meteora działa za kulisami?
Czy ktoś może wyjaśnić, jak to działa za kulisami, ponieważ dla mnie wygląda jak magia :).
Przeczytałem docs i spojrzałem na source behind reactivity, ale nie rozumiem tego.Jak reaktywność Meteora działa za kulisami?
Czy ktoś może wyjaśnić, jak to działa za kulisami, ponieważ dla mnie wygląda jak magia :).
Więc to jest rzeczywiście dość prosto do przodu, na poziomie podstawowym są 2 rodzaje funkcji zaangażowane:
Funkcje tworzące reaktywny kontekst (funkcyjne reaktywne)
Funkcje, które unieważniają reaktywny kontekst (funkcja unieważniająca)
Funkcje, które mogą wykonywać obie te funkcje. (I kłamał istnieją 3)
Kiedy zadzwonisz reactive function
to tworzy context
że sklepy meteorów na całym świecie i do którego reactive function
zgadza się invalidation
zwrotnego. Funkcja, którą można przekazać do funkcji reaktywnej lub jakiejkolwiek funkcji, która działa z jej wnętrza, może być invalidating function
i może pobrać bieżący numer context
i przechowywać go lokalnie. Te funkcje mogą w dowolnym momencie, na przykład aktualizować bazę danych lub po prostu wywołanie czasowe, unieważnić tę wartość. Oryginał reactive function
będzie wtedy odbierać to zdarzenie i ponownie się oszacować.
Oto krok po kroku przy użyciu funkcji meteorów (zauważ, że Tracker.autorun
zwykło się nazywać Deps.autorun
):
Tracker.autorun(function(){
alert("Hello " + Session.get("name"));
});
Session.set("name", "Greg");
context
context
context
.context
globalnie jako aktywnego context
reactive function
i an invalidating function
context
i współpracownicy to wewnętrznie z kluczem „nazwa”po powrocie te funkcje, meteor czyści zmienną globalną aktywny kontekstowe
Sesja.set to kolejna funkcja zdolna do unieważnienia context
.
context
Utworzono przez Sesji związane z kluczowym „name”contexts
, kiedy unieważnione, prowadzą swoje callbacków unieważnienie.context
s (to konstrukcja Session.get a nie to, co trzeba zrobić, unieważnianie callback)contexts
teraz uruchomić swoje callbacków unieważnienie.context
.Cała realizacja jest rzeczywiście dość prosta, jak również można go zobaczyć tutaj:
https://github.com/meteor/meteor/blob/master/packages/tracker/tracker.js
i dobry przykład, jak to działa można znaleźć tutaj:
https://github.com/meteor/meteor/blob/master/packages/reactive-dict/reactive-dict.js
Programowanie reaktywne w rzeczywistości nie jest oparte na meteorach lub JS
możesz przeczytać o tym tutaj: http://en.wikipedia.org/wiki/Reactive_programming
fajne dzięki za to dobre wyjaśnienie –
Świetne wyjaśnienie to powinno być na stronie meteorów. – alejandro
Ten film wideo był bardzo pomocny http://www.eventedmind.com/posts/meteor-reactivity-with-contexts – jonperl