Motivation
- 여러 개의 개별 빌드가 단일 어플리케이션을 형성해야 한다
- 이러한 개별 빌드는 컨테이너처럼 작동하며, 빌드 간에 코드를 노출하고 소비하여 단일 통합 어플리케이션을 생성할 수 있다
Low-level Concepts
- 로컬 모듈과 원격 모듈을 구별한다
- 로컬 모듈은 현재 빌드의 일부인 일반 모듈이다
- 원격 모듈은 현재 빌드의 일부가 아니며 원격 컨테이너에서 런타임에 로드되는 모듈이다
- 원격 모듈을 로드하는 것은 비동기 작업으로 간주된다
- 원격 모듈을 사용할 때 이러한 비동기 작업은 원격 모듈과 엔트리 포인트 사이에 있는 다음 청크 로드 작업에 배치된다
- 청크 로드 작업 없이는 원격 모듈을 사용할 수 없다
- 청크 로드 작업은 일반적으로 import()를 호출하는 것이지만, require([…]) 같은 이전 구조도 지원된다.
- 특정 모듈에 대한 비동기 접근을 노출하는 컨테이너 엔트리를 통해 컨테이너가 생성된다. 노출된 접근은 두 단계로 구분 된다.
- 모듈 로드(비동기)
- 모듈 평가(동기)
- 1단계는 청크 도중에 수행된다. 2단계는 다른 로컬 및 원격 모듈과 인터리브된 모듈 평가 중에 수행된다.
- 이렇게 하면, 모듈을 원격에서 또는 그 반대로 변환해도 평가 순서가 영향을 받지 않는다
- 컨테이너를 중첩할 수 있다
- 다른 컨테이너의 모듈을 사용할 수 있다
- 컨테이너 간의 순환 의존성도 가능하다
High-level concepts
- 각각의 빌드는 컨테이너의 역할을 하며 다른 빌드를 컨테이너로 소비하기도 한다
- 이렇게 하면 각각의 빌드가 해당 컨테이너에서 로드하여 다른 노출된 모듈에 접근할 수 있다