[編集]
ブログに記事を書いて、より詳細に説明しました。
sam-dev.net でそれを読むと、パート IIをコード サンプルとともに読む ことができます。
私は自分の質問に答えます。それが最良のアプローチだと思うからではなく、それが私が採用することに決めたものだからです.
これは、ビジネスモジュールをフォルダーに分割した方法です
- アプリ
- ビジネスモジュール
- コントローラー
- index.js
- firstCtrl.js
- secondCtrl.js
- ディレクティブ
- サービス
- ビュー
- フィルター
- anotherBusinessModule
- 共有
- app.js
- index.html
各モジュールには、コントローラー、ディレクティブなどのための独自のフォルダー構造があります...
各フォルダーには index.js ファイルがあり、次に各コントローラー、各ディレクティブなどを区切るための他のファイルがあります...
index.js ファイルには、モジュールの定義が含まれています。たとえば、上記の businessModule のコントローラーの場合:
angular.module('myCompany.businessModule.controllers', []);
ここには依存関係はありませんが、存在する可能性があります。
次に、firstCtrl.js でそのモジュールを再利用して、コントローラーを追加します。
angular.module('myCompany.businessModule.controllers').controller('firstCtrl',
function(){
});
次に、app.js は、アプリケーションに必要なすべてのモジュールを依存関係配列に追加して集約します。
angular.module('myApp', ['myCompany.businessModule', 'myCompany.anotherBusinessModule']);
共有フォルダには、ビジネス モジュールに固有ではなく、どこでも再利用できるディレクティブやその他のものが含まれています。
繰り返しますが、それが最善のアプローチであるかどうかはわかりませんが、私にとっては間違いなく機能します。多分それは他の人に刺激を与えることができます。
編集
index.js ファイルにはモジュール宣言が含まれているため、他のアプリケーション スクリプトの前に HTML ページで参照する必要があります。そのために、ASP.NET MVC 4 の IBundleOrderer を使用しました。
var bundle = new ScriptBundle("~/bundles/app") { Orderer = new AsIsBundleOrderer() };
bundles.Add(bundle.IncludeDirectory("~/app", "*.js", true));
public class AsIsBundleOrderer : IBundleOrderer
{
public IEnumerable<FileInfo> OrderFiles(BundleContext context, IEnumerable<FileInfo> files)
{
files = files.OrderBy(x => x.Name == "index.js" ? 0 : 1);
return files;
}
}