Come dovrei strutturare i moduli in un'applicazione Angular.js?

5

Sono abbastanza nuovo su Angular.js e quello che mi confonde è il modo migliore per utilizzare i moduli in un'applicazione. Mi sembra che i moduli possano contenere uno degli altri costrutti comuni in AngularJS (controller, direttive, filtri, servizi, ecc.), Ma da qui non sono sicuro quali moduli debbano contenere quali elementi.

  • Dovrei avere un modulo che contenga tutti gli altri oggetti nella mia applicazione? Questo sembra il più facile da configurare, ma questo odora di God Object Anti-Pattern per me.

  • Devo dividere i moduli per tipi di oggetti? vale a dire un modulo per i controller, uno per le direttive, ecc.?

  • Devo dividerli per usare? In modo che tutte le direttive, i servizi e i filtri utilizzati per parte dell'applicazione siano insieme?

  • qualche altra strategia che non ho ancora visto / pensato?

Qualsiasi aiuto sarebbe molto apprezzato.

    
posta GSto 13.05.2013 - 17:28
fonte

1 risposta

1

Probabilmente non sei nuovo e ora hai la risposta. I link da @KeesDijk e @Aaron dovrebbero già fornire una risposta esauriente.

Dato che ho anche avuto la stessa domanda prima, questa risposta potrebbe essere utile per coloro che iniziano ad imparare Angularjs.

Should I have one module that contains all of the other objects in my application? This seems the easiest to set up, but this smells of the God Object Anti-Pattern to me.

Hai la risposta da solo. A meno che non sia un'app davvero piccola, avere un singolo modulo di solito non è una buona scelta.

Should I divide modules up by types of objects? i.e. one module for controllers, one for directives, etc.?

Supponiamo che tu abbia 4 moduli per controller / direttive / servizio / filtro ciascuno, una volta che hai più di 30 componenti. Ogni modulo ha 7-8 componenti. Dato che hai un'applicazione più grande, finirai come l'opzione precedente.

Inoltre, se si desidera riutilizzare una funzionalità, come la gestione degli utenti, è necessario avere dipendenza da diversi moduli.

Should I divide them by use? So that all directives, services, and filters that are used for part of the application are together?

Questa è la prassi raccomandata più comune. Un modulo / cartella per una funzionalità. È più facile da riutilizzare, leggere (da altri programmatori) e scalare man mano che l'applicazione cresce.

Anche la riusabilità è migliore, puoi semplicemente avere una dipendenza dal modulo 'utente'.

some other strategy I haven't yet seen / thought of?

In base all'opzione precedente, puoi avere varianti.

  • Può essere utile strutturare il modulo in modo annidato per sub-funzionalità. Ad esempio, puoi avere il modulo 'utente' che contiene i moduli 'user-list' e 'user-edit'. (Vedi ad esempio link )
  • È possibile separare il modulo comune / condiviso dal resto e prefissarli. Ex. "comune", "utente modello comune", "comune-ui-modale", ecc.
risposta data 27.03.2015 - 21:06
fonte