모듈은 어플리케이션의 일부분.
기능별로 모듈을 만들음
루트 모듈
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
모듈 데코레이터는
controllers
와 providers
를 받는다.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();