2016-10-13 3 views
2

알아요 (내가 틀렸다면 정정 해줘) angular.module('a', ['b', 'c'])의 각도의 부트 스트랩 절차는 것을 :앵귤러 모듈은 서로 연계 될 수 있습니까?

  1. 부트 스트랩 bc.
  2. 부트 스트랩 a.

부트 스트랩은 3 단계 절차 :

  1. INIT
  2. 구성 각 단계 의존성 ab, c 다음에 먼저 발생

  • 런 - 다음 단계로 이동합니다.


    어디에서 위의 설명을 잘못 했습니까? 이 은 ab에 달려 있지만 ba (실제로 작동 함)에 의존한다는 것을 보여 주므로 각 모듈은 자체 부트 스트래핑 전에 종속성을 부트 스트립하므로 내 설명이 위선입니다.

    도와 주시겠습니까?

  • 답변

    5

    각도는 모듈의 지연된 실행을 사용합니다. 이는 예상 한 것과는 다르게 작동합니다.

    각 모듈은 일련의 종속성으로 정의되지만 함수 호출 측면에서는 "실행"되지 않습니다. 모든 모듈이 정의 된 후 프로그램이 실행됩니다.

    가정 : A는 B에 따라 다르므로 B가 먼저 실행됩니다. 그러나 B는 A에 따라 달라 지므로 A 또는 B를로드 할 수 없게됩니다.

    실제 : 모듈 A는 종속성 B와 함께 생성됩니다. 모듈 B는 종속성 A와 함께 생성됩니다. 실행시 모든 종속성이 충족됩니다 A와 B가 모두 존재하기 때문입니다. 구성 및 실행 블록

    :

    [...] 가 필요한 모듈의 구성 블록 전에 실행에 필요한 모듈의 구성 블록. 실행 블록에 대해서도 이 참입니다. 다른 모듈이 여러 개 필요한 경우에도 각 모듈은 한 번만로드 할 수 있습니다 ( ).

    실제로 이것은 중복되지 않는 스택과 유사하게 작동합니다. A와 B의 예제에서 A가 먼저 스택에 추가 된 다음 B의 종속성이 추가됩니다. B는 A에 의존하고 A는 이미 스택에 있으므로 아무 것도 추가되지 않습니다. 따라서 config 블록은 B, A 순으로 실행됩니다. 그런 다음 실행 블록은 같은 순서로 실행됩니다.

    자세한 내용은 https://docs.angularjs.org/guide/module을 참조하십시오.

    +0

    답을 수정하고 각 모듈의 init, config 및 실행 단계를 설명 할 수 있습니까? 감사합니다. – johni

    +0

    @johni 실행 및 구성 블록에 대한 정보를 추가했습니다. init 단계는 모듈을 정의하는 것으로 가정합니다.그 단계에서 순서는 중요하지 않습니다 (제가 해답에서 설명했듯이). – tcooc

    +0

    또한 [모듈로드 코드] (https://github.com/angular/angular.js/blob/07849779ba365f371a8caa3b58e23f677cfdc5ad/src/auto/injector.js#L755)에서도이 동작에 대해 설명합니다. 원한다면 체크 아웃 할 수 있습니다. 먼저 모두를로드 한 다음 종속성이 시작된 위치의 맨 위에서 맨 아래로 실행합니다. –

    관련 문제