2016-10-19 6 views
1

に同じ依存関係の問題が含まれます。しかし、モジュールbの両方は、モジュールcによって異なります。私が理解から、以下私は例のモジュール<strong></strong>と<strong>B</strong>のための別のモジュールを含む<strong>アプリ</strong>モジュールを持ってangularjs

var app = angular.module('app', ['a', 'b']); 

app.controller('AppCtrl', function(Containner) { 
    console.log(Containner); //Avaiable 
}); 

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

a.controller('ACtrl', function(Containner) { 
    console.log(Containner); //Avaiable 
}); 

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

b.controller('BCtrl', function(Containner) { 
    console.log(Containner); //Avaiable 
}); 

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

c.factory('Containner', function() { 
    return { 
    test: 'test' 
    } 
}); 

を参照してください、あなたは一度だけモジュールを含める必要があり、その後、あなたも、あなたがその依存関係としてそれを含まない他のモジュールにアクセスすることができます。

var app = angular.module('app', ['a', 'b']); 

app.controller('AppCtrl', function(Containner) { 
    console.log(Containner); 
}); 

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

a.controller('ACtrl', function(Containner) { 
    console.log(Containner); //YOU CAN STILL GET IT 
}); 

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

b.controller('BCtrl', function(Containner) { 
    console.log(Containner); 
}); 

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

c.factory('Containner', function() { 
    return { 
    test: 'test' 
    } 
}); 

モジュールAは依存性としてCを持っていませんが、依然としてCのサービスにアクセスできます。つまり、ある場所にCを含める限り、角度アプリケーションにすべて含まれている限り、他のモジュールでも使用できます。

各モジュールは開発者に独自の依存関係を明確に伝えるので、私は最初のコードを好む。しかし、あなたは一度含める必要があり、それは他の場所で利用可能になるので、冗長であるようです。この状況のベストプラクティスと、シーンの背後にある重複した依存関係をどのように処理するか。

+0

'app.js'に依存性を含めると、完全なプロジェクトで利用できるようになります。 1つのファイルだけに依存関係を追加した場合は、その特定のファイルに対してのみ利用できるので、必要なときに追加する必要があります。アプリケーションのメインファイル、つまりapp.jsに追加することをお勧めします。あなたのシナリオでは、 'a'、' b'、 'c'をある場所に' app.js'だけ追加して、お互いに依存関係を使うことができます。 –

+0

@ojuskulkarni私は、 app)を常に使用し、直接使用するモジュールのみを含めます。これは、この場合、アプリケーションモジュールがaとbを使用し、cではなくcを使用する場合は、aとbをリストしますが、cは依存関係ではありません。モジュールaがモジュールcを使用している場合は、モジュールcなどをリストする必要があります。モジュール化する場合は、モジュール化し、モジュールを移植性と再利用性にする必要があります。 – plong0

答えて

1

最初の方法は、いくつかの理由で絶対に良い方法です。

まず、非常に明確で、別のモジュールがその依存関係を含んでいるという不思議で未知の期待に依存しません。

第2に、再利用可能性をモジュラー設計の中核とするために、モジュール 'b'が存在しないアプリケーションでモジュールを使用する場合は、が必要です。が必要です。

私は、モジュールが常に使用されており、モジュールが直接使用するモジュールをリストするのがベストプラクティスと言います。

appが、それは['a', 'b']なくcとしての依存性をリストする必要がありabではなくcを使用している場合。

acが、それは可能な限り明確にするために書かれるべき['c']

コードとしてその依存関係を一覧表示し、可能な限り少数の質問をするプログラマを残す必要があります使用している場合。 (モジュールcが参照されている場合にモジュールcがインクルードされていない理由を本当に知りたくありません)

+1

また、角度のデザインの欠陥を示す2番目の例は、どのような意味でも「フィーチャ」ではありません。 – tcooc

関連する問題

 関連する問題