Module Federation 전방향 참조(omnidirectional) 가능한 이유
모듈 페더레이션이 동작하는 방식을 보면 아래와 같다.
- 특정 모듈에 대한 비동기 접근을 노출하는 컨테이너 엔트리를 통해서 컨테이너가 생성된다.
- 노출된 접근은 두 단계로 구분된다.
- 모듈 로드 (비동기)
- 모듈 평가 (동기)
- 모듈 평가는 모듈의 코드를 실행하고, 그 결과를 생성하는 과정
-
1단계 모듈 로드는, 청크 로드 중에 실행된다.
-
2단계는 다른 로컬 및 원격 모듈과 인터리브(끼워넣기) 된 모듈 평가 중에 수행된다.
- 이렇게하면 모듈을 로컬에서 원격으로 또는 그 반대로 변환해도 평가 순서가 영향을 받지 않는다.
-
즉, 모듈 로드와 평가가 분리되어있어서 순환참조 발생 X
-
따라서 컨테이너는 중첩 가능하다. 컨테이너는 다른 컨테이너의 모듈을 사용 가능하고, 컨테이너 간 순환의존성도 가능하다.