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?