AngularJSのフォルダー構造[終了]


186

大規模でスケーラブルなAngularJSアプリケーションのフォルダー構造をどのようにレイアウトしますか?


回答:


251

ここに画像の説明を入力してください

タイプで並べ替え

左側には、タイプ別に整理されたアプリがあります。小さいアプリにはそれほど悪くありませんが、ここからでも、探しているものを見つけるのがより困難になることがわかります。特定のビューとそのコントローラーを検索する場合、それらは別のフォルダーにあります。他の方法でコードを整理する方法がわからない場合は、右側の手法(機能ごとの構造)に簡単に移行できるため、ここから始めるのが良いでしょう。

機能で並べ替え(推奨)

右側では、プロジェクトが機能別に整理されています。すべてのレイアウトビューとコントローラーはレイアウトフォルダーに配置され、管理コンテンツはadminフォルダーに配置され、すべての領域で使用されるサービスはサービスフォルダーに配置されます。ここでの考え方は、機能を機能させるコードを探しているときに、1つの場所に配置されるということです。サービスは、多くの機能を「サービス」するため、少し異なります。管理が非常に簡単になるため、アプリが形になり始めたらこれが好きです。

よく書かれたブログ投稿:http : //www.johnpapa.net/angular-growth-structure/

サンプルアプリ:https : //github.com/angular-app/angular-app


22
投稿した直後に自分の質問に答えていますか?
ジャクブ2013

34
@Jakub質問を作成するときに、「wikiに投稿する独自の質問に答える」というオプションがあります。
マイケルJ.カルキンス2013

3
@MichaelCalkins、私はアイデアが好きです。私は、あまりにも素敵な角度であなたのユーチューブtutsのいくつかをチェックアウト
ロニー

5
@ロニー私はこれがAngularJSにとって最も難しい学習ステップの1つであることを覚えているので、うまくいけば人々を助けてくれるでしょう。ブログを読んだ後、私は10種類のレイアウトを経験したと思います。
マイケルJ.カルキンス2013

5
これはコミュニティ主導のangularJSベストプラクティスページです。それらのファイル構造の提案は、2つの例での両方のアイデアの組み合わせです。機能で並べ替えるという考えの背後にある2番目の例の方が好きです。
ジョン

32

いくつかのアプリケーション(Symfony-PHP、いくつかの.NET MVC、いくつかのROR)をビルドした後、私にとって最良の方法は、AngularJSジェネレーターでYeoman.ioを使用することです

これが最も一般的で一般的な構造であり、最もよく維持されます。

そして最も重要なことは、その構造を維持することで、クライアント側のコードを分離し、サーバー側のテクノロジー(あらゆる種類の異なるフォルダー構造と異なるサーバー側のテンプレートエンジン)に依存しないようにするのに役立ちます。

これにより、自分や他のコードを簡単に複製して再利用できます。

ここでは、gruntビルドの前です(ただし、yeomanジェネレーターを使用してください。作成するだけではありません)。

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

そして、大げさなビルドの後(concat、uglify、revなど...):

    /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
コードのroutesブロックの構成はどこにあるべきですか?angular.module('myApp').config(function($routeProvider) { ... });
スポーツ

1
+1また、ヨーマンがアイテムを置く場所をカスタマイズできます。私見、他のアプリの機能をより簡単に再利用できるため、大きなアプリの機能/モジュールでソートする方が良いです。
Tivie、2014年

30

私はこれが好きはangularjs構造に関するエントリが

angularjs開発者の一人が書いたので、良い洞察が得られるはずです

ここに抜粋があります:

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
質問はフォルダ構造に関するものであり、リンクは他の点で興味深いものですが、この質問の表に新しいものはありません。
JohnC 2014

これはヨーマン角度ジェネレーターで使用されます
EdgarT 2015

これで、スクリプトの種類ごとにフォルダーを整理しました。
Tudor

4

フレームワークの構造ではなく、アプリケーションの機能の構造によってフォルダを整理するアプローチもあります。angular-appと呼ばれるこれを説明するgithubスターターAngular / Expressアプリケーションがあります。


これは、非常に大規模なプロジェクトの場合、多くの場合より良いアプローチです。悲しいことに、私たちはまだフォルダー構造で立ち往生しています...タグ付けの方が良いのでそれほど問題ではなく、タグに応じて複数のビューを持つことができます。
Christophe Roussy

3

私は3番目のangularjsアプリを使用しています。これまでのところ、フォルダー構造は毎回改善されています。今はシンプルにしています。

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

単一のアプリに適していると思います。複数のプロジェクトが必要になるプロジェクトはまだありません。


後で新しい機能を保守および導入するときに問題が発生します。そのフォルダーの下に、その機能に関連する機能とコンポーネントを含むフォルダー構造を用意することは、常に良い習慣です。
Jaseem Abbas、2015

Angular JSには、asp.net WebプロジェクトやWindowsデスクトップアプリケーションのような標準のプロジェクトフォルダー構造やプロジェクトテンプレートがないと思いますか?

1
@dotNetBlackBelt正解です。角度に関しては基準はありません。これを投稿してから、フォルダの設定方法に変更を加えました。私の最後のプロジェクトでは、このOPのトップアンサーは多かれ少なかれ行った
Ronnie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.