1

私はちょうど AngularJS を学んでいて、同じことを行うためのさまざまな方法を見つけています.

両方の方法で作成されたコントローラーを見てきました。

app.controller('CustomersController', function ($scope, customersService) {});

app.controller('CustomersController', ['$scope', 'customersService', function ($scope, customersService) {}]);

明らかに 2 番目の方法はタイピングが多いですが、最初の方法よりもその方法を使用する利点はありますか?

4

3 に答える 3

4

どちらも一般的に機能しますが、コードが縮小されると、2 番目の構文のみが機能します。ほとんどの JavaScript ミニファイアーは引数識別子の名前を変更するため、コードは次のようになります。

a.controller('CustomersController',function(b,c){});

その場合、Angular はどのサービスを注入する必要があるかを判断できなくなります。ただし、配列構文を使用すると、次のような縮小コードが得られます。

a.controller('CustomersController',['$scope','customersService',function(b,c){}]);

この場合、配列の最後の要素はコントローラ関数として使用され、それ以前のすべての要素はサービスの名前を表す文字列です。そのリストは効果的にコントローラ関数に適用され、各サービスはミニファイヤによって選択された任意の識別子によって識別されます。

于 2013-05-23T12:46:44.980 に答える
1

どちらでも問題ありません。最初のコードは次のように縮小されるため、コードの縮小を計画している場合は 2 番目のコードをお勧めします。

app.controller('CustomersController', function (a, b) {});

依存性注入がどのように機能するかにより、これは機能しませんが、2 つ目は次のようになります。

app.controller('CustomersController', ['$scope', 'customersService', function (a, b) {}]);

$scope を a に、customersService を b に入れることを内部的に知っている角度。

于 2013-05-23T12:47:39.040 に答える
0

2 番目の方法を使用すると、コードを変数で縮小できます。これをしない場合:

['$scope', 'customersService', function ($scope, customersService) {}]

次に、変数が縮小され、アプリケーションが壊れる可能性があります。

于 2013-05-23T12:46:59.433 に答える