2017-03-29 3 views
9

Ref Angular offizielle Website Stil Arglist der Dateistruktur:Angular 4 + Redux (oder NGRX/store) Ordner- und Dateistruktur

https://angular.io/docs/ts/latest/guide/style-guide.html#!#04-06

Wenn ich möchte Redux (oder NGRX/store) implementieren wäre es für mein neues Angular 4-Projekt besser, meine Anwendung auf diese Weise zu strukturieren?

 
    project root 

    ├── src/ 
    │ ├── app/ 
    │ │ ├──stores/ 
    │ │ │ ├── heros/ 
    │ │ │ │ ├── heros.actions.ts|reducer|effects|store.ts 
    │ │ │ │ 
    │ │ │ │── ..../ 
    │ │ │ │ ├── ..... 
    │ │ │ 
    │ │ ├── containers/ 
    │ │ │ ├── heros/ 
    │ │ │ │ ├── heros.component.ts|html|css|spec.ts 
    │ │ │ │ │ └── ...... 
    │ │ │ 
    │ │ │ 
    │ │ ├── components/ 
    │ │ │ ├── hero-list/ 
    │ │ │ │ │ ├── hero-list.component.ts|html|css|spec.ts 
    │ │ │ │ │ └── ....... 
    │ │ │ ├── .... 

I have been using second structure but as my app grows, it was getting difficult to maintain, and then I refactored the structure in this way, the plus point of this structure is, if in future you decide to remove or edit ngrx all you need to do is remove or edit the stores folder. 

Note: 

- containers folder hold my smart components 

- components folder hold my dumb components 

Oder folgen NGRX/Store Beispiel (https://github.com/ngrx/example-app), die Anwendung auf diese Weise zu strukturieren?

 
    project root 
    ├── src/ 
    │ ├── app/ 
    │ │ ├── actions/ 
    │ │ │ ├── hero.js 
    │ │ │ ├── hero-list.js 
    │ │ │ └── ...... 
    │ │ ├── reducers/ 
    │ │ │ ├── hero.js 
    │ │ │ ├── hero-list.js 
    │ │ │ └── ...... 
    │ │ ├── components/ 
    │ │ │ ├── heros/ 
    │ │ │ │ ├── hero/ 
    │ │ │ │ │ ├── hero-list.component.ts|html|css|spec.ts 
    │ │ │ │ │ └── ...... 
    │ │ │ │ ├── hero-list/ 
    │ │ │ │ │ ├── hero-list.component.ts|html|css|spec.ts 
    │ │ │ │ │ └── ...... 
    │ │ │ ├── ...... 

Gibt es noch eine andere bessere Struktur?

+0

Entweder Verwendung app/oder src/als App Stammordner halten .. . (src/app macht keinen Sinn, es sei denn, Sie haben wie src/app2, src/app3, und in diesem Fall ist diese Anwendungen in separate Repos getrennt) –

+0

Ich würde es auf die erste Weise tun, aber es ist nur persönliche p Referenz/Meinung. Daher die enge Abstimmung. – cartant

+4

In Zukunft können Feature-Module ihre eigenen Reduzierstücke hinzufügen. Aus diesem Grund habe ich in jedem Modul ein Verzeichnis für den Speicher '/ app/feature/store' und es enthält' feature.actions.ts', 'feature.reducer.ts' und' feature.selectors.ts' – adharris

Antwort

2

Projekt-Stamm

├── src/ 
│ ├── app/ 
│ │ ├──stores/ 
│ │ │ ├── heros/ 
│ │ │ │ ├── heros.actions.ts|reducer|effects|store.ts 
│ │ │ │ 
│ │ │ │── ..../ 
│ │ │ │ ├── ..... 
│ │ │ 
│ │ ├── containers/ 
│ │ │ ├── heros/ 
│ │ │ │ ├── heros.component.ts|html|css|spec.ts 
│ │ │ │ │ └── ...... 
│ │ │ 
│ │ │ 
│ │ ├── components/ 
│ │ │ ├── hero-list/ 
│ │ │ │ │ ├── hero-list.component.ts|html|css|spec.ts 
│ │ │ │ │ └── ....... 
│ │ │ ├── .... 

Ich habe zweite Struktur wurde unter Verwendung aber als meine App wächst, es war immer schwierig zu halten und dann Refactoring ich die Struktur auf diese Weise der Pluspunkt dieser Struktur ist, Wenn Sie in Zukunft entscheiden, ngrx zu entfernen oder zu bearbeiten, müssen Sie lediglich den Ordner stores entfernen oder bearbeiten.

Hinweis:

  • Container Ordner meine intelligenten Komponenten

  • Komponenten Ordner halten meine stummen Komponenten

+1

heros.store.ts ist das Modell? –

+0

Was wird das Modell (Entität, Schnittstelle) hier sein? – Warapitiya