AngularJS Folder Structure [chiuso]


186

Come si layout una struttura di cartelle per un'applicazione AngularJS grande e scalabile?


Risposte:


251

inserisci qui la descrizione dell'immagine

Ordina per tipo

Sulla sinistra abbiamo l'app organizzata per tipo. Non male per le app più piccole, ma anche qui puoi iniziare a vedere che diventa più difficile trovare quello che stai cercando. Quando voglio trovare una vista specifica e il suo controller, sono in diverse cartelle. Può essere utile iniziare qui se non si è sicuri di come organizzare il codice in quanto è abbastanza semplice passare alla tecnica a destra: struttura per caratteristica.

Ordina per funzione (preferito)

A destra il progetto è organizzato per caratteristica. Tutte le viste e i controller del layout vanno nella cartella del layout, il contenuto dell'amministratore va nella cartella dell'amministratore e i servizi utilizzati da tutte le aree vanno nella cartella dei servizi. L'idea qui è che quando stai cercando il codice che fa funzionare una funzione, si trova in un posto. I servizi sono leggermente diversi in quanto "supportano" molte funzionalità. Mi piace una volta che la mia app inizia a prendere forma in quanto diventa molto più facile da gestire per me.

Un post sul blog ben scritto: http://www.johnpapa.net/angular-growth-structure/

App di esempio: https://github.com/angular-app/angular-app


22
stai rispondendo alla tua domanda subito dopo averla postata?
Jakub,

34
@Jakub C'è un'opzione chiamata "rispondi alla tua domanda contribuendo al wiki" quando crei la domanda.
Michael J. Calkins,

3
@MichaelCalkins, mi piace l'idea. Ho appena visto alcuni dei tuoi tutorial su YouTube anche su Angular, bello
Ronnie,

5
@Ronnie Ricordo solo che questo è uno dei passi più difficili della curva di apprendimento verso AngularJS, quindi spero che aiuti le persone. Penso di aver passato 10 layout diversi dopo aver letto i blog e cosa no.
Michael J. Calkins,

5
Ecco una pagina di best practice angularJS guidata dalla community. Il loro suggerimento sulla struttura dei file è una combinazione di entrambe le idee in due esempi. Mi piace di più il secondo esempio in quanto è più dietro l'idea di ordinare per caratteristica.
Giovanni,

32

Dopo aver creato alcune applicazioni, alcune in Symfony-PHP, alcune .NET MVC, alcune ROR, ho scoperto che il modo migliore per me è usare Yeoman.io con il generatore AngularJS.

Questa è la struttura più popolare e comune e meglio mantenuta.

E, soprattutto, mantenendo quella struttura, ti aiuta a separare il tuo codice lato client e renderlo agnostico alla tecnologia lato server (tutti i tipi di diverse strutture di cartelle e diversi motori di modelli lato server).

In questo modo puoi facilmente duplicare e riutilizzare il tuo e altri codici.

Eccolo prima di Grunt Build: (ma usa il generatore yeoman, non solo crearlo!)

/app
    /scripts
            /controllers
            /directives
            /services
            /filters
            app.js
    /views
    /styles
    /img
    /bower_components
    index.html
bower.json

E dopo il grugnito build (concat, uglify, rev, ecc ...):

    /scripts
        scripts.min.js (all JS concatenated, minified and grunt-rev)
        vendor.min.js  (all bower components concatenated, minified and grunt-rev)
    /views
    /styles
        mergedAndMinified.css  (grunt-cssmin)
    /images
    index.html  (grunt-htmlmin)

1
dove dovrebbe essere la configurazione del blocco di blocchi di codice? angular.module('myApp').config(function($routeProvider) { ... });
sport

1
+1 Inoltre, puoi personalizzare dove yeoman mette le tue cose. IMHO, l'ordinamento per funzione / modulo nelle grandi app è migliore poiché puoi riutilizzare più facilmente una funzione in altre app.
Tivie,

30

Mi piace questa voce sulla struttura di angularjs

È scritto da uno degli sviluppatori di angularjs, quindi dovrebbe darti una buona idea

Ecco un estratto:

root-app-folder
├── index.html
├── scripts
   ├── controllers
      └── main.js
      └── ...
   ├── directives
      └── myDirective.js
      └── ...
   ├── filters
      └── myFilter.js
      └── ...
   ├── services
      └── myService.js
      └── ...
   ├── vendor
      ├── angular.js
      ├── angular.min.js
      ├── es5-shim.min.js
      └── json3.min.js
   └── app.js
├── styles
   └── ...
└── views
    ├── main.html
    └── ...

1
La domanda riguarda la struttura delle cartelle e sebbene il collegamento sia interessante in altri modi, non porta nulla di nuovo alla tabella per questa domanda.
Giovanni

Viene utilizzato dal generatore angolare Yeoman
EdgarT

Quindi hai organizzato la cartella per tipo di script.
Tudor,

4

Vi è anche l'approccio di organizzare le cartelle non in base alla struttura del framework, ma alla struttura della funzione dell'applicazione. Esiste un'applicazione Angular / Express di avvio github che illustra questa chiamata app angolare .


Questo è spesso un approccio migliore per progetti molto grandi. Purtroppo siamo ancora bloccati con le strutture delle cartelle ... taggare sarebbe meglio quindi non avrebbe molta importanza e potremmo avere più viste a seconda dei tag.
Christophe Roussy,

3

Sono sulla mia terza app angularjs e la struttura delle cartelle è migliorata ogni volta finora. Tengo il mio semplice adesso.

index.html (or .php)
/resources
  /css
  /fonts
  /images
  /js
    /controllers
    /directives
    /filters
    /services
  /partials (views)

Lo trovo buono per le singole app. Non ho ancora avuto un progetto in cui avrei bisogno di più.


Avrai problemi nel mantenimento e nell'introduzione di nuove funzionalità in un secondo momento. È sempre buona norma disporre di una struttura di cartelle con funzionalità e componenti correlati a tale funzionalità nella relativa cartella.
Jaseem Abbas,

Ho ragione nel pensare che Angular JS non abbia una struttura di cartelle di progetto standard o un modello di progetto, come un progetto web asp.net o un'applicazione desktop di Windows?

1
@dotNetBlackBelt è corretto. Non esiste uno standard quando si tratta di angolare. Da quando ho pubblicato questo, ho apportato modifiche al modo in cui configuro le mie cartelle. Il mio ultimo progetto è andato più o meno quale sia la risposta principale di questo PO
Ronnie il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.