앵귤러의 모듈과 컴포넌트
Contents
앵귤러를 사용해서 개발하던 중.. 모듈과 컴포넌트의 정확한 차이가 뭔지 궁금해져서 찾아보았다. https://medium.com/swlh/angular-component-vs-module-b8c7347c604e
Module
모든 앵귤러 어플리케이션은 AppModule
이라 부르는 root 모듈을 가진다.
AppModule
은 어플리케이션을 시작하는 메커니즘을 제공한다.
NgModule
은 여러 유용한 기능을 제공한다.
- 다른
NgModule
들의 기능들을 import 할 수 있다. - 현재 모듈의 기능들을 export 하여 다른
NgModule
들에서 사용할 수 있게 해준다.
즉, NgModule
들은 앵귤러 어플리케이션에서 공유 가능한, 독립적인 유닛으로 동작한다.
모듈에는 여러 타입이 존재한다.
- 시스템 모듈 (라우터 등)
- 커스텀 모듈
- 서드 파티 모듈 (ngrx, rxjs 등)
앵귤러의 모듈들은 모듈이 정말 필요한 시점에 lazy load 될 수 있고, lazy loading은 앵귤러 어플리케이션의 성능을 향상하는데 중요한 역할을 수행한다.
Component
컴포넌트는 view라고 부르는 화면의 일부분을 조작한다.
Component
는 앵귤러 어플리케이션의 UI 조각을 구성하는 가장 기본적인 블럭이다.
@Component
데코레이터와 템플릿을 통해 제공된다.
- 컴포넌트 데코레이터는 앵귤러 컴포넌트로써 클래스를 표시하고
- 어떻게 컴포넌트가 처리, 인스턴스화되고, 런타임에 사용될 지에 대한 추가적인 메타 데이터를 제공한다.
Module vs Component
모듈은 컴포넌트 + 디렉티브 + 서비스 + 파이프 + 헬퍼의 컬렉션이다.
- 각각의 컴포넌트는 동일 모듈 내의 다른 컴포넌트를 사용할 수 있다.
- 다른 모듈에서 선언된 컴포넌트를 사용하기 위해서는 불러올 컴포넌트가 속한 모듈에서 컴포넌트를 export 해줘야 한다.
- 여러 모듈이 모여 어플리케이션을 구성하게 된다.