次の angularjs プロジェクト構造を使用しています。
index.html
js/
-- angularjs
-- application.js
-- shared
-----SharedModule.js
-----LocalizeService.js
-----OtherSharedService.js
-- user
-----UserModule.js
-----LoginController.js
-----RegisterController.js
-----UserService.js
言い換えれば、ファイルをタイプ (サービス/コントローラー/ディレクティブなど) ではなく、ロジックの目的 (ユーザー/共有/カートなど) でグループ化します。これが大規模プロジェクトの正しいアプローチであると読みました。
メインの application.js ファイルには、次のようなモジュールが含まれています。
angular.module('myApplication', [
'ngRoute',
'ngCookies',
'sharedModule',
'userModule',
'dahsboardModule',
])
次に、各モジュールには、関連するコントローラー/ディレクティブ/サービスなどが含まれます。
例: SharedModule.js
var sharedModule = angular.module('sharedModule',[]);
sharedModule.factory('Localize', ['$http', '$rootScope', '$window', LocalizeService]);
sharedModule.controller('someController',['$rootScope',SomeController]);
次に、個別のファイルごとにロジックを実装します。私の質問は、それぞれの個別のサービス/コントローラーのロジックを実装するには、どのデザイン パターンを使用すればよいですか?
私はこの本を読みました: http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/ これまでのところ、私の最愛のデザインパターンは「Revealing module pattern」で、これは一種のオムニ目的のデザインパターンです。他のプロジェクトで何度も使用しました(angularjsなし)。
しかし、angularjsでは使用できないようです。
var LocalizeService = (function() {
})();
$rootScope/$http などのすべてのものをモジュールに渡すにはどうすればよいですか?
これは今私にとってどのように機能するかです:
function LocalizeService($http,$rootScope,$window) {
var localize = (function() {
function publicFunction() {
// do smth.
}
return {
someFunction: publicFunction
}
})();
return localize;
}
しかし、それが完全に正しいかどうかはわかりません。よろしければアドバイスいただけませんか?