Quando si sviluppa un framework MVC, come dovrei usare Knockout.js?

0

Attualmente sto utilizzando Laravel PHP MVC Framework per sviluppare un'applicazione web; e sta andando avanti abbastanza bene. Mi sento molto a mio agio con le aspettative del framework e su come dovrebbe essere strutturata la mia applicazione. Questo non è un problema.

Il mio problema è con il front end, interfaccia utente / lato interazione. Sto usando Knockout.js & jQuery per incapsulare un sacco di interfacce utente front end & interazione dei dati; e non sono sicuro di utilizzare correttamente il precedente.

Knockout.js è orgoglioso degli elementi di associazione nel DOM ai gestori di eventi e funzioni in un livello "ViewModel" Javascript, che ti consente di inviare richieste al server tramite AJAX per recuperare nuovi dati, aggiungere modelli di HTML al tuo attuale DOM e modifica ciò che è presente sulla tua pagina. Lo capisco in un contesto di pagina singola . Con ciò, voglio dire, se ho una pagina discreta in cui ho bisogno di user & interazione con i dati, probabilmente finirò per creare un file SomeSinglePageViewModel.js per gestirli.

Ciò di cui non sono sicuro è come, o anche se, i modelli di visualizzazione di Knockout.js dovrebbero essere usati su / tra le pagine. In questo momento sto creando un ViewModel per quasi tutte le operazioni e le pagine CRUD nella mia applicazione. Questo design è corretto?

Ad esempio, avrò un CreateUserViewModel.js per la mia pagina di / User / Signup e un EditUserViewModel.js per la mia pagina di / User / Edit; e un 'HomePageViewModel.js per la pagina di destinazione dell'applicazione per controllare quell'interfaccia utente. È corretto seguire una filosofia "one viewmodel per page"? O sto sbagliando? È pensato per essere una filosofia "one viewmodel per modello di dati"?

Dove disegno la linea tra ViewModels? Rischio di incapsulare troppe funzionalità in un unico oggetto, o rischio di separare tutto troppo ampiamente e creare file duplicati? Come hai strutturato i tuoi ViewModels Knockout.js?

    
posta ReactingToAngularVues 13.05.2015 - 12:20
fonte

2 risposte

1

Lo scopo di ViewModel è quello di nascondere e visualizzare i dati nel modello per adattarli alla vista. La semplice creazione di un ViewModel per visualizzazione sarebbe il modo migliore per gestirlo.

    
risposta data 14.05.2015 - 02:28
fonte
0

Come accennato da Pelican, stai prendendo l'approccio giusto in termini di adattamento dei tuoi modelli di visualizzazione alle tue opinioni. Detto questo, è ancora possibile astrarre alcune funzionalità per il riutilizzo. Ad esempio, potrebbe essere utilizzato per elenchi di paging in più viste. In tal caso, creare un modello generico che possa essere riutilizzato in più viewmodels.

Se ritieni di aver bisogno di funzionalità più complete, come lo stato di passaggio, la gestione di complesse operazioni CRUD, ecc., probabilmente Knockout non è la soluzione migliore per questi casi. In questo caso, BackBone.js (o framework completi come Angular ecc.) Sono più adatti a questo.

    
risposta data 19.05.2015 - 18:03
fonte

Leggi altre domande sui tag