El seguimiento de dependencias es una forma elegante de decir: “Cada vez que algo cambia, todo lo que depende de él debe saberlo”. La mayoría de los marcos modernos, donde la vista y el modelo están separados, permiten esto de una forma u otra.
Knockout tiene un objeto rastreador llamado ko.dependencyDetection . Esto es algo así como un intermediario, que actúa entre
- Una dependencia a la que se quiere acceder.
- Algo que se suscribe a esa dependencia.
Aquí hay un ejemplo, con el objeto “Apple”, que mostramos en la vista. Digamos, debemos actualizar la vista o hacer otra cosa, siempre que este objeto cambie.
- ¿Cuáles son las habilidades esenciales que todo desarrollador web front-end debería saber?
- ¿Spring Framework tiene un gran futuro? ¿Y vale la pena aprender?
- ¿Qué diseño y arquitectura serían mejores para una nueva red de dinero móvil, tipo VISA o PayPal?
- Si tuviera que comenzar un sitio web con tanto tráfico como Facebook desde el día 1, ¿qué tecnologías utilizaría para hacerlo?
- ¿Es necesario tener experiencia en Angular 2 antes de trabajar en Angular 4?
var test1 = ko.observable (“manzana”);
ko.dependencyDetection.begin ({
devolución de llamada: función (suscriptor, uniqueId) {
console.log (“El observable con el id”, id, “fue leído”);
}
});
Ahora, cada vez que se lee la “manzana” observable …
- Se otorga una identificación única al elemento al que se accede.
- Se llama a la devolución de llamada, utilizando esa identificación única.
Ahora podemos correr
prueba1 ();
// Salida:
// Se accedió al observable con la identificación 1.
El rastreador de dependencias mantiene una lista de elementos. Cada vez que ocurre un cambio, se notifican sus dependencias.
La alternativa es realizar un seguimiento manual y aplicar el cambio, siempre que ocurra. Esta es más o menos la forma clásica de JS de hacerlo.
Knockout JS permite usar la arquitectura MVVM (Model View View Model). Esto significa que el modelo siempre estará completamente sincronizado con la interfaz de usuario. Por lo tanto, es adecuado para aplicaciones donde se necesita su servidor para estar siempre sincronizado con la interfaz de usuario. Gran parte de la sincronización estará en el extremo del cliente, por lo que evita que el servidor tenga que soportar la peor parte de la manipulación de la interfaz de usuario. Eso significa servidores más rápidos, lo que significa una carga de página más rápida.
Knockout es muy adecuado para casos en los que la interfaz de usuario es suficientemente compleja y necesita ser completamente desacoplada. La desventaja de esto, es quizás que la parte frontal de las cosas, se vuelve bastante complicada a largo plazo.