2016-03-04 12 views
8

Ich arbeite an verschiedenen Webprojekten und frage mich, ob es eine Faustregel bezüglich der Projekt-/Ordnerstruktur gibt?Die Ordner-/Verzeichnisstruktur des Webprojekts - Best Practices

Viele meiner Apps sind in der Struktur erstellt, in der jeder Dateityp sein eigenes Verzeichnis hat. Zum Beispiel:

└─┬root 
    | 
    ├─┬node_modules 
    | └ // node_modules (npm libraries) 
    | 
    └─┬www 
    | 
    ├─┬Libs // Js libraries 
    | | 
    | ├─┬Angular 
    | | └ … (.js files) 
    | | 
    | └─┬Bootstrap 
    | └ … (.js files) 
    | 
    ├─┬JavaScript // my Js files 
    | | 
    | ├─┬Services 
    | | └ … // my services (.js files) 
    | | 
    | ├─┬Controllers 
    | | └ … // my controllers (.js files) 
    | | 
    | ├─┬Directives 
    | | └ … // my directives (.js files) 
    | | 
    | └app.js // js entry point 
    | 
    ├─┬StyleSheets 
    | | 
    | ├─┬Less 
    | | └ … // my styles (.less files) 
    | | 
    | └─┬Css 
    | └ … // my styles (.css files) 
    | 
    ├─┬Views 
    | | 
    | ├─┬Pages 
    | | └ … // pages layout (.html files) 
    | | 
    | └─┬DirectivesTemplates 
    | └ // templates layout (.html files) 
    | 
    ├─┬Assets 
    | | 
    | ├─┬Fonts 
    | | └ … // app fonts (.ttf/ .woff files) 
    | | 
    | └─┬Images 
    | └ // app images (.jpg/ .png files) 
    | 
    ├─┬Data 
    | | 
    | └ // app info (.json files) 
    | 
    └index.html // web site entry point 

jedoch in letzter Zeit sehe ich ein paar Projekte, wobei jedes Modul hat ein eigener Ordner und mit ihm Code (JS-Datei) sind, Ansicht (HTML-Datei), Stil (CSS/.Weniger Dateien) und Daten (.json Datei, Bilder, Schriften usw.) Zum Beispiel:

└─┬root 
    | 
    ├─┬node_modules 
    | └ // node_modules (npm libraries) 
    | 
    └─┬www 
    | 
    ├─┬Libs // Js libraries 
    | | 
    | ├─┬Angular 
    | | └ … (.js files) 
    | | 
    | └─┬Bootstrap 
    | └ … (.js files) 
    | 
    ├─┬Modules 
    | | 
    | ├─┬moduleA 
    | | | 
    | | ├moduleA.js //modules controller 
    | | | 
    | | ├moduleA.html //modules view 
    | | | 
    | | ├moduleA.less //modules style 
    | | | 
    | | └moduleA.json //modules data 
    | | 
    | ├─┬moduleB 
    | | | 
    | | ├moduleB.js 
    | | | 
    | | ├moduleB.html 
    | | | 
    | | ├moduleB.less 
    | | | 
    | | ├moduleB.json 
    | | | 
    | | └moduleB-icon.png 
    | | 
    | └─┬moduleC 
    | | 
    | ├moduleC.js 
    | | 
    | ├moduleC.html 
    | | 
    | ├moduleC.less 
    | | 
    | ├moduleC.json 
    | | 
    | └moduleC-font.woff 
    | 
    └index.html // web site entry point 

gibt es best-Practice-Projektstruktur in Bezug auf?

+0

Die erste Struktur sieht wie ein einzelner Entwickler oder ein sehr kleines Team aus. Die zweite ist für ein größeres Projekt mit mehr Entwicklern. Jedes Modul kann entfernt und ersetzt, aktualisiert oder geändert werden, ohne den Rest zu berühren. – Tigger

+0

In Java ist Maven ein De-facto-Standard. Es erlaubt keine große Kreativität in Ordnerstrukturen. Benutzt du Java? –

+0

Ich arbeite hauptsächlich auf Client-Seite-Anwendungen, in JavaScript entwickelt, mit einer Vielzahl von Frameworks wie: eckig, ember, jquery, ionic, webpack, grunt etc .. (auf verschiedenen Projekten) –

Antwort

5

Ihre Beispiele zeigen zwei beliebte Projektstrukturen, organisieren Sie Dateien nach Typ oder Modul. Ich bevorzuge letzteres (Code getrennt in Module) und ich sehe es viel für Javascript Frontend-Frameworks verwendet. Es ist etwas, das die Angular style guide (eine gute Referenz für Winkel Best Practices) als folders by feature bezeichnet.

Ich referenziere den Angular Styleguide, weil Ihre Beispiele Angular Projekte zeigten, aber das Konzept kann auf andere Frameworks übertragen werden. Der Code ist nach Funktionen organisiert, so dass Sie die Datei, die Sie bearbeiten müssen, leicht finden können. Wie jemand in einem Kommentar darauf hingewiesen hat, skaliert diese Projektstruktur gut, da die App und das Team an Größe zunehmen.