https://docs.nestjs.com/modules
- module 이란,
@Module()
데코레이터가 달린 클레스 이다.
@Module()
데코레이터는 Nest가 어플리케이션 구조를 구성하는데 사용하는 메타데이터를 제공하니다. (make use of to-v : v 하는데 활용하다)
- 각각의 어플리케이션은 최소한 root module 이라는 하나의 모듈을 가지고 있어야 합니다.
- root module 은 네스트가 application graph 를 만드는데 사용하는 스타팅 포인트 입니다.
- application graph 란, 네스트가 모듈과 프로바이더의 관계와 디펜던시를 해결하는데 사용하는 내장 데이터 스트럭쳐 이니다.
- 아주작은 어플리케이션의 경우 이론적으로 단지 루트모듈만 필요할 수 있습니다. (하지만 전형적인 케이스는 아닙니다)
- 우리는 당신의 컴포넌트를 효과적으로 구성하는 방법으로 모듈이 강력하게 추천된다는 것을 강조하고 싶습니다.
- 결과적으로 어플리케이션은 여러개의 모듈들로 구성됩니다. (각각 밀접하게 관련된 기능 set을 캡슐랑화 합니다.)
@Module()
데코레이터는 하나의 오브젝트(아래의 프로퍼티들을 포함하는)를 받습니다. :
providers
: 프로바이더는 네스트 인젝터에 의해 인스턴스화 되고, 최소한 이 모듈을 건너 공유될 수 있습니다.
controllers
: 인스턴스화 되야 하는 이 모듈 안에 정의된 컨트롤러들의 집합
imports
: 이 모듈에서 요청된 프로바이더들을 익스포트하는 모듈의 임포트 리스트 (말 겁나 어렵게하네)
exports
: 이 모듈에서 제공하고 이 모듈을 가져오는 다른 모듈에서 사용할 수 있어야하는 프로바이더들의 하위집합
- 모듈은 프로바이더들을 기본적으로 캡슐화 합니다.
- 현재 모듈의 직접적인 부분이 아니거나, 임포트된 모듈이 익스포트하는 하지 않는 프로바이더들은 인젝트 하는 것이 불가능하니다.
- 당신은 모듈로부터 익스포트된 프로바이더들을 모듈의 public interface 나 API 라고 생각할 수 있습니다.
Feature modules (기능 모듈)