KnockoutJS - Marco MVVM

Model-View-ViewModel (MVVM)es un patrón de diseño arquitectónico para desarrollar aplicaciones de software. MVVM fue desarrollado por el arquitecto de Microsoft John Gossman en 2005. Este patrón se deriva del patrón Modelo-Vista-Controlador (MVC). La ventaja de MVVM es que separa la interfaz gráfica de usuario de la capa de aplicación de la lógica empresarial. MVVM es responsable de manejar los datos del modelo subyacente de tal manera que se representan y administran con mucha facilidad. ViewModel en MVVM representa una versión abstracta del estado y las acciones de View.

Las clases de vista no saben que existen las clases Model y ViewModel, también Model y ViewModel no saben que existe View. Model tampoco sabe que ViewModel y View existen.

Arquitectura

Ver

View es una interfaz gráfica de usuario creada con lenguaje de marcado para representar datos. La vista se vincula a las propiedades de un modelo de vista a través del concepto de vinculación de datos, que se conecta indirectamente a los datos del modelo. No es necesario cambiar la vista para cualquier alteración realizada en ViewModel. Los cambios realizados en los datos en ViewModel se propagan automáticamente en View debido al enlace.

Modelo

El modelo son datos de dominio u objeto comercial, que contiene datos en tiempo real. El modelo no tiene comportamientos. El comportamiento se implementa principalmente en la lógica empresarial.

ViewModel

ViewModel es el lugar central, donde los datos de la lógica de visualización de Model y View se agrupan. ViewModel contiene el estado dinámico de los datos. Hay una carpeta implícita entre View y ViewModel para comunicarse entre sí. Este enlace incluye datos declarativos y enlace de comandos. La sincronización de View y ViewModel se logra a través de este enlace. Cualquier cambio realizado en View se refleja en ViewModel y, de manera similar, cualquier cambio en ViewModel se refleja automáticamente en View. La existencia de este mecanismo de enlace bidireccional es un aspecto clave de este patrón MVVM.