0

次の 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;
}

しかし、それが完全に正しいかどうかはわかりません。よろしければアドバイスいただけませんか?

4

1 に答える 1

0

serviceの代わりにコンストラクターで a を使用しますfactory

var LocalizeService = (function() {
  function LocalizeService($http, $rootScope, $window) {

  }

  LocalizeService.prototype = {
    publicFunction: function() {

    }
  };

  LocalizeService.$inject = ['$http','$rootScope','$window'];

  return LocalizeService;
}());

sharedModule.service('Localize', LocalizeService);
于 2014-02-20T08:03:01.713 に答える