모듈(Module)이란?

설명
Tags
 
모듈은 어플리케이션의 일부분. 기능별로 모듈을 만들음
 

루트 모듈

main.ts 파일에서 NestFactory.create() 호출 시에 전달되는 모듈이 루트 모듈.
루트 모듈은 모든 모듈들을 아우루는 가장 상위 부모라고 보면 되고, 당연히 단 하나만 존재
// main.ts import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 여기선 AppModule이 루트모듈 await app.listen(3000); } bootstrap();
 

모듈이란?

모듈은 어플리케이션의 일부분.
한 가지의 역할을 하는 앱인 셈
예를 들어 인증을 담당하는 어플리케이션이 있다면, 그게 users 모듈이 될 거다.
인스타그램 같은 걸 만든다면, photos 모듈, videos 모듈 등을 만들어서 쓰겠지.
하나의 기능을 담당하는 녀석이라고 보면 됨.
 

@Module

모듈 데코레이터는 controllersproviders를 받는다.
💡
nest js는 모듈의 결합으로 이루어진다는 것을 명심하자. 예를 들면 AppModule이라면 AppService와 AppController만 가지도록 만드는 것이 좋다. Movie에 관한 것이 필요하다면 MovieModule 모듈을 만들고 모듈 내에서 MovieService와 MovieController를 만들자.
import { Module } from '@nestjs/common'; import { AppController } from './app.controller'; import { AppService } from './app.service'; @Module({ imports: [], controllers: [AppController], providers: [AppService], }) export class AppModule {}
 

루트모듈(AppModule)

모든 것을 아우르는 단 하나의 루트 모듈이 있다.
모든 것이 루트 모듈 안에 담겨야한다. 루트 모듈 가지고 NestFactory.create(루트모듈)하기 때문!
즉, AppModule은 모든 다른 모듈들을 임포트 하는 루트 모듈이다.
import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; async function bootstrap() { const app = await NestFactory.create(AppModule); // 여기선 AppModule이 루트 모듈 await app.listen(3000); } bootstrap();
main.ts