Molte persone (la maggior parte?) AngularJS sembrano sostenere l'idea di rompere le app AngularJS in molti moduli.
Brian Ford nel suo blog afferma già che il packaging per livello (controller, servizio, ecc.) è una nozione "sciocca", quindi non ci andrò nemmeno. (Vedi link .)
Ma supponiamo che tu modularizzi un'app per caratteristica. Forse hai un modulo utenti e un modulo messaggi , insieme al modulo app standard per caricare questi moduli funzione. Metti premurosamente i percorsi relativi alla funzionalità utente nel modulo utenti e i percorsi relativi ai messaggi nel modulo messaggi . Ora, nella mia mente, hai creato una dipendenza in OGNI modulo delle caratteristiche su ngRoute . Quindi ogni modulo dovrebbe elencare "ngRoute" nella sua matrice di dipendenze, giusto?
Sfortunatamente, AngularJS rende fin troppo facile rovinare tutto. Se il modulo app carica sia utenti che messaggi , ma solo utenti elenca "ngRoute" come dipendenza, non importa in fase di esecuzione: $ routeProvider sarà ancora iniettato nella tua funzione di configurazione in messaggi , essendosi sostanzialmente risolto tramite la dipendenza del modulo utenti su ngRoute .
Il mio problema potrebbe riguardare lo schema comune di un modulo "app" che carica / fa riferimento a vari moduli di funzionalità. Lo schema ha senso per me, così come le dipendenze transitive. Ciò che è problematico è che la particolare implementazione di Angular può mascherare casi in cui un modulo non fa riferimento alle sue dipendenze del modulo anche in modo indiretto. Il modulo può funzionare nel contesto di una particolare app (perché il modulo è referenziato da un altro modulo "app" che fa anche riferimento alle sue dipendenze direttamente o indirettamente), ma se dovessi copiare il modulo in un'altra app, fallirebbe a causa di dipendenze mancanti.
Ho l'impressione che la maggior parte della gente non prenda in considerazione il fatto che il modulo utenti ora sia essenzialmente una dipendenza del modulo messaggi . Tuttavia, è un problema che ho problemi a guardare oltre. Per me, se creiamo probabilmente queste confuse dipendenze tra i moduli di funzionalità, questo diminuisce davvero il vantaggio netto della modularizzazione, e preferirei avere un solo modulo app che incapsula tutti i componenti per tutte le funzionalità nel app.