Дело не в
вере в то, что основной модуль всегда будет импортироваться на уровне приложения
, а в том, как AngularJS управляет модулями. Когда вы пишете что-то вроде этого
angular.module('app', ['A','B','C']);
В основном вы говорите, что для того, чтобы модуль app
работал, вам необходимо импортировать модули A
, B
и C
. Впоследствии в модуле B
, возможно, вам придется импортировать некоторые другие модули
angular.module('B', ['C', 'D', 'E', 'F']);
Как вы видите в этом примере, C
требуется как из приложения, так и из модуля B
.
AngularJS неявно строит дерево для этих зависимостей, в котором будет
- приложение как root
A
, B
, C
на первом уровне D
, E
, F
как выходит на втором уровне, всех дочерних элементов B
C нет снова на втором уровне, так как он уже присутствует на первом. Затем Angular продолжит загрузку всех модулей от root до листьев, смотрящих на дерево.
Итак, отвечая на ваш вопрос: 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 никогда не разрешится.