Sto sviluppando applicazioni Web utilizzando l'approccio Model-View-ViewModel con Knockout.js. Dopo aver letto su introduzione originale di MVVM di John Gossman, mi sono reso conto che il mio ViewModel contiene sempre TUTTA la logica dell'app, non solo la logica dell'interfaccia utente, ma tutto.
Ho letto da qualche parte che con Knockout, il modello è considerato il database o generalmente i dati sul server. Ma secondo MVC, il modello contiene anche funzioni che eseguono alcune elaborazioni con tali dati e non sono correlate all'IU.
Quindi mi chiedevo se sarebbe stato ragionevole avere un oggetto Model separato indipendente dall'oggetto ViewModel? L'idea alla base di ciò sarebbe che ViewModel conterrebbe solo la logica dell'interfaccia utente (come previsto da Gossman) e il modello conterrà solo la logica di business (come in MVC), che non ha nulla a che fare con la visualizzazione effettiva. Esempio:
var viewModel = {
hint: ko.observable("Idle"), //text visible in the View
buttonClicked: function () {
this.hint("doing stuff");
model.doStuff();
this.hint("done");
}
};
var model = {
doStuff: function () {
//business logic, UI independent
}
};
Esiste una raccomandazione o "best practice" che può essere derivata dalla definizione del pattern MVVM?