He leído el docs y miré el source behind reactivity, pero no lo entiendo.¿Cómo funciona la reactividad de Meteor detrás de escena?
¿Alguien puede explicar cómo funciona esto detrás de las escenas, ya que me parece mágico :).
He leído el docs y miré el source behind reactivity, pero no lo entiendo.¿Cómo funciona la reactividad de Meteor detrás de escena?
¿Alguien puede explicar cómo funciona esto detrás de las escenas, ya que me parece mágico :).
Por lo tanto, es en realidad bastante sencillo, en un nivel básico hay 2 tipos de funciones implicadas:
funciones que crean un contexto reactiva (función reactiva)
funciones que invalidan un reactivo contexto (función invalidante)
Funciones que pueden hacer ambas cosas. (Mentí hay 3)
Cuando se llama a un reactive function
crea una context
que las tiendas de meteoros a nivel mundial y para el cual el reactive function
suscribe una devolución de llamada invalidation
. La función que pasa a una función reactiva, o cualquier función que se ejecute desde ella, puede ser invalidating function
y puede tomar el context
actual y almacenarlo localmente. Estas funciones pueden entonces, en cualquier momento, como en una actualización de DB o simplemente una llamada de temporizador, invalidar ese context
. El reactive function
original recibiría ese evento y se evaluaría.
Aquí está un paso a paso utilizando las funciones de meteoros (tenga en cuenta que Tracker.autorun
que antes se llamaba Deps.autorun
):
Tracker.autorun(function(){
alert("Hello " + Session.get("name"));
});
Session.set("name", "Greg");
context
context
context
por primera vez.context
globalmente como el actualmente activo context
reactive function
y un invalidating function
context
y la asocia internamente con la tecla "nombre"cuando regresan estas funciones session.get, meteoro limpia la variable global contexto activo
Sesión.set es otra función capaz de invalidar un context
.
context
s creados por sesión asociados con el "nombre" clavecontexts
, cuando invalidado, ejecutar sus devoluciones de llamada de invalidación.context
s (Eso es el diseño de Session.get y no lo que una devolución de llamada invalidación debe hacer)contexts
ahora ejecutar sus devoluciones de llamada de invalidación.context
nuevamente.Toda la aplicación es en realidad bastante sencillo, así, se puede ver aquí:
https://github.com/meteor/meteor/blob/master/packages/tracker/tracker.js
Y un buen ejemplo de cómo funciona se puede encontrar aquí:
https://github.com/meteor/meteor/blob/master/packages/reactive-dict/reactive-dict.js
Programación reactiva en realidad no es meteoro o JS específico
se puede leer al respecto aquí: http://en.wikipedia.org/wiki/Reactive_programming
genial gracias por esta buena explicación –
Gran explicación, esto debería estar en la página meteorito. – alejandro
Este video fue muy útil http://www.eventedmind.com/posts/meteor-reactivity-with-contexts – jonperl