相同的依赖问题,我有一个应用模块,其中包括另一个模块,例如模块一个和b。但是模块a和b取决于模块c。请参阅以下如何设计两个模块包括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,就可以在任何其他模块中使用,只要它们全部包含在角度应用程序中。
我更喜欢第一段代码,因为每个模块都清楚地告诉开发者自己的依赖关系。然而,这似乎是多余的,因为你只需要包含一次,并且可以在其他地方使用。这种情况的最佳做法是什么,角度如何处理幕后重复的依赖关系。
如果你在'app.js'中包含了依赖关系,那么它将始终可用于完整的项目。如果你只在一个文件中添加了依赖项,那么你必须在每次需要时添加它,因为它只能用于该特定文件,所以最好的做法是将它添加到应用程序主文件中,即'app.js'。并且在你的场景中,在一个地方添加'a','b','c'只有'app.js',这样你就可以相互使用所有依赖关系 –
@ojuskulkarni我会说最好的做法是为模块应用程序)始终只包含它直接使用的模块。在这种情况下,如果应用程序模块使用a和b而不是c,它应该列出a和b而不是c作为其依赖项。如果模块a使用模块c,则应列出模块c等。在模块化构建时,您必须模块化思考,并使模块便于携带并可重复使用。 – plong0