假设我有一个包含客户模块、产品模块和核心模块的应用程序。在我的app模块中,我将导入所有三个模块(客户、产品、核心)。因此,客户模块和产品模块都可以访问核心模块。但是,例如,如果我的customer模块特别依赖于核心模块中的服务,我是否也应该在customer模块中导入核心模块?
基本上,将我的核心模块导入添加到所有需要它的模块以及我的应用程序模块中是一个好主意吗?或者我应该只在应用程序级别包含核心模块,并让其他模块相信核心模块将始终在应用程序级别导入?
发布于 2020-07-11 18:08:18
这不是太多关于
相信核心模块将始终在应用程序级别导入
而是AngularJS如何管理模块。当你像这样写东西的时候
angular.module('app', ['A','B','C']);基本上,您的意思是为了让模块app工作,您需要导入模块A、B和C。之后,在模块B中,您可能需要导入一些其他模块
angular.module('B', ['C', 'D', 'E', 'F']);正如您在本例中看到的,app和模块B都需要C。
AngularJS隐式地为该依赖项构建了一个树,它将在该树中
作为root
A,
B应用程序,在第一个
C,在第二个级别中的F,都是B的子级
C不再出现在第二层中,因为它已经出现在第一层中。然后,Angular将继续加载从根到叶的所有模块,查看树。
所以,回答你的问题:AngularJS足够智能,可以避免因为你错误地声明了两次而多次加载东西。通过构建该树,重复项被考虑在内。
你必须避免这样做:
angular.module('app', ['A']);
angular.module('A', ['B']);
angular.module('B', ['C']);
angular.module('C', ['A']);如您所见,生成的图表如下所示:
app -> A -> B -> C -> A -> B -> C -> A -> ....你有一个angular永远不能解决的循环。
https://stackoverflow.com/questions/62840889
复制相似问题