KnockoutJS - MVVM Framework

Model-View-ViewModel (MVVM)é um padrão de projeto arquitetônico para o desenvolvimento de aplicativos de software. MVVM foi desenvolvido pelo Microsoft Architect John Gossman em 2005. Este padrão é derivado do padrão Model-View-Controller (MVC). A vantagem do MVVM é que ele separa a interface gráfica do usuário da camada do aplicativo da lógica de negócios. O MVVM é responsável por manipular os dados do modelo subjacente de forma que sejam representados e gerenciados com muita facilidade. ViewModel em MVVM representa uma versão abstrata do estado e ações de View.

As classes de visão não sabem que as classes Model e ViewModel existem, também Model e ViewModel não sabem que a visão existe. Model também não sabe que ViewModel e View existem.

Arquitetura

Visão

View é uma interface gráfica de usuário criada usando linguagem de marcação para representar dados. View se vincula às propriedades de um ViewModel por meio do conceito de vinculação de dados, que se conecta indiretamente aos dados do modelo. View não precisa ser alterado para qualquer alteração feita em ViewModel. As alterações feitas nos dados em ViewModel são propagadas automaticamente em View devido à vinculação.

Modelo

O modelo são dados de domínio ou objeto de negócios, que contém dados em tempo real. O modelo não carrega comportamentos. O comportamento é implementado principalmente na lógica de negócios.

ViewModel

ViewModel é o local central, onde os dados da lógica de exibição de Model e View são agrupados. ViewModel mantém o estado dinâmico dos dados. Há um fichário implícito entre View e ViewModel para se comunicarem entre si. Essa associação inclui dados declarativos e associação de comando. A sincronização de View e ViewModel é obtida por meio dessa vinculação. Qualquer mudança feita em View é refletida em ViewModel e, da mesma forma, qualquer mudança em ViewModel é refletida automaticamente em View. A existência desse mecanismo de ligação bidirecional é um aspecto importante desse padrão MVVM.