Ci sono una serie di elementi che devono essere risolti dalla tua domanda. Sto per dire MVC
quando quello che intendo è " MVC
e tutte le varianti correlate".
I've been hearing a-lot about the "new" MV* frameworks.
Come dovresti; c'è un numero di vantaggi (e svantaggi) nell'utilizzo di un framework MVC o simili.
Ricorda inoltre che MVC è presente negli anni '70 e che è stato reso popolare con l'uso di SmallTalk. Consulta i vari saggi di Martin Fowler sulle architetture della GUI per ulteriori informazioni.
but I much prefer to write clean, modular code in raw JavaScript
Quindi dovresti vedere il fascino di MVC allora. : -)
MVC è stato creato per aiutare a far rispettare l'esatta cosa che stai proclamando di volere all'interno del tuo codice. Cambiamenti (viste) dell'interfaccia utente. La logica per guidare le modifiche dell'interfaccia utente (controller *). Le origini dati e i meccanismi di accesso (modello) cambiano. MVC è stato progettato per incapsulare il cambiamento e fornire le migliori probabilità di migrazione di ciascun componente alla successiva incarnazione dell'applicazione. Separando gli strati in singoli componenti, il rischio di cambiamento è ridotto al minimo.
* Per Controller
, intendo l'uso moderno del termine non l'uso originale dai giorni SmallTalk. E se ciò non ha senso, quindi ignorare questo sidenote.
Given a methodical/structured/SOLID approach to writing a JavaScript application, where OOP, SOC, SRP and other design principles are adhered to, wouldn't the usage of MV* frameworks be superfluous?
Forse è superfluo, forse non lo è. Quanto è grande la tua applicazione? Quanto è devoto il tuo team a "fare la cosa giusta?" Quanto bene il tuo team comprende il dominio e dove dovrebbero trovarsi le responsabilità all'interno di ogni singola classe?
Questo è un sacco di dipendenze da altri che stai introducendo lì. Certo, il tuo codice è perfetto e non commetterai mai un errore di progettazione. Ma come riuscirai a proteggere il progetto dalla fallibilità umana degli altri? Come riuscirai a proteggere il progetto dalle complessità di scala? Una manciata di punti di vista non è nulla da tenere nella tua memoria. Ma per quanto riguarda le centinaia?
MVC fornisce una struttura per evitare alcuni di questi problemi.
Ma allo stesso tempo, MVC non è un proiettile d'argento. Ecco alcune delle critiche valide contro di esso.
-
Tende ad essere pesante per l'implementazione. Dove avresti potuto ottenere con 1 lezione, ora ne avrai tre. Sui progetti più piccoli, hai ragione a mettere in discussione i vantaggi di MVC.
-
Può essere frustrante rimanere all'interno della struttura di MVC. C'è sempre la tentazione di lasciare il codice del controller sanguinare nella vista, o lasciare che la vista acceda direttamente al modello. Dopo aver scritto la tua ennesima funzione wrapper, ti chiedi perché lo stai facendo.
-
MVC presume che la tua app vivrà per sempre e cambierà le tecnologie. Se non cambi mai l'interfaccia utente, l'origine dati o la logica aziendale, hai perso tempo a incapsulare questi livelli in previsione del cambiamento.
In sintesi, MVC è uno strumento come qualsiasi altro. La sua longevità e il risorgere della consapevolezza dimostrano quanto sia stato prezioso. Ma non è un proiettile d'argento, non una panacea per tutti i disturbi di programmazione. Comprendilo e usalo (o no!) Come appropriato per i tuoi progetti.