2017-01-05 5 views
1

私はAngularSeed内、一部のコントローラは次の形式を持っていることを観察していた:AngularJSモジュールでコントローラーを宣言すると良いですか?

angular.module('myApp.controllers', []). 
    controller('MyCtrl1', [function() { 

    }]) 
    .controller('MyCtrl2', [function() { 

    }]); 

を一方、一部のコントローラには、次の構文を持っている:生産中のプロジェクトのための良い方法です

var myApp = angular.module('myApp',[]); 

myApp.controller('MyCtrl1', ['$scope', function($scope) { 

    } }]); 


myApp.controller('MyCtrl2', ['$scope', function($scope) { 

    } }]); 

? また、これら2つの方法のパフォーマンスに違いはありますか?

+2

[このスタイルガイド](https://github.com/johnpapa/angular-styleguide/blob/master/a1/ README.md)は非常に役立つはずです。変数を導入する – mshildt

答えて

1

これらの2つの構文間の性能には違いはないだろう。 しかし、2番目の方法を使用することをお勧めします。

angular.module()はモジュールオブジェクトを返します。これにより、コントローラ、フィルタ、サービス、およびディレクティブ登録の機能が公開されます。 これらの関数はそれぞれ同じモジュールを返すので、同じリファレンスについて説明しています。これはビルダーパターンに似ています。

Angular Best Practice for App Structure(Public)によると、angular.module()を複数回呼び出さないでください。他のファイルとモジュールは同じものを変更しないようにしてください。 このため、後者をお勧めします。

ロジックは単純です: モジュールをグローバル変数として公開し、他のファイルにその変数を追加させます。

-1

ファイルごとに1つのコンポーネントのみを含めると、モジュールに変数を導入する必要はほとんどありません。代わりに、単純なゲッター構文​​を使用します。モジュールを使用する場合、ゲッター構文​​で連鎖を使用すると、変数の衝突やリークが回避されます。 John Papa's Angular style guideから

/* avoid */ 
var app = angular.module('app'); 
app.controller('SomeController' , SomeController); 

function SomeController() { } 
/* recommended */ 
angular 
.module('app') 
.controller('SomeController' , SomeController); 

function SomeController() { } 
+1

は、ほとんど費用のかかる操作ではなく、連鎖に関する反論を行うことができます。 – mccainz

+1

これは私の質問ではありませんでした。再度質問をお読みください。 – user5649133

+0

[あなたのソース](https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md#modules)を提供してください。それ以外の場合は盗作です。 – Mistalis

1

プロジェクトは、私はあなたにこの構文を示唆して非常に大きい場合...

var controller = function (scope) { 
}; 

controller.$inject = ["$scope"]; 

app.controller("appCtrl", controller); 
関連する問題