0

プロバイダーで角度サービスをすぐに使用できるいくつかのインスタンスを見てきました。

.module('yea.buddy', [
    'ui-translate'
])
.config(function($translateProvider) { ... })

.module('yea.buddy.two', [
    'some-module'
])
.config(['some-module-service', function(someModuleService) { ... }])

2つの違いは何ですか?リソースが暗示され、角括弧表記が必要ないのはいつですか?

編集:混乱がある例があり、ミニフィケーションを壊したくないので質問しています。

4

1 に答える 1

0
  1. モジュールの例 angular.module('app',[]); 角括弧は依存モジュール用です。縮小するかどうかに関係なく、ここに含める必要がある依存関係がある場合、これは必須です。

  2. コントローラー、サービス、ディレクティブ、およびフィルターを作成するには、ミニファイする場合はそれぞれの依存関係を提供する必要があります。縮小したくない場合はオプションです

  3. angular.module('app',[]).config() の場合、項目 2 と同じです。つまり、縮小しない場合はオプションです。

ボーナス:

なぜAngularが必要なのですか?

angular が関数の引数から依存関係を検出する方法を理解してみましょう。引数の順序は役に立ちません。引数の順序を変更できる場合は、問題なく機能します。実際にはAngularはグローバル配列 $injector を維持し、サービスやフィルター、またはその他のコンポーネントの作成中に配列インデックス(オブジェクトプロパティ)が提供された名前であるすべてのインスタンスを格納します。たとえば、サービスを作成したとします

  angular.module('app',[]).service('good', function(){

  });

とても角度があります

$injector['good'] = service/filter etc output 

さて、本題に戻ります。したがって、新しく作成したサービス 'good' をコントローラーに引数として挿入しようとすると、angular は最初に提供されたすべての引数を見つけて、 $injector[EACH_SINGLE_ARUGMENT] からそのインスタンスを復元します。

しかし、コードを縮小すると、ほとんどの場合、関数の引数が縮小されます。たとえば、'good' は 'a' になります。その結果、angular は検出に失敗します。そのため、angular はこのトリックを使用するため、依存関係を角括弧でも提供する場合などに使用します。

app.controller(['good', function(good) {
 }] );

minify スクリプトは配列の値を変更しないため、angular はこの配列から名前を取得します。minify スクリプトは通常、次のことを行うためです。

  app.controller(['good', function(a) {
   }] );

少しでもお役に立てれば幸いです。

于 2015-04-02T05:26:56.797 に答える