Nest.js 에서 *.module.ts는 기본적으로 Express.js에서 router의 역할과 유사하다.
import
현재 모듈이 다른 모듈에서 제공하는 기능을 사용할 수 있도록 하는데 사용된다. 즉, 다른 모듈을 가져와서 이 모듈에서 사용할 수 있게 만든다.
controller
이 모듈에서 사용되는 컨트롤러를 지정한다.
provider
이 모듈에서 사용되는 Service, Factory, Repository 등의 provider를 지정한다. provider는 의존성 주입(Dependency Injection)을 통해 app 전역에서 사용할 수 있는 객체를 제공한다.
export
이 모듈에서 정의한 provider를 다른 모듈에서도 사용할 수 있도록 내보내는 역할을 한다. exports에 포함된 provider는 이 모듈을 import한 다른 모듈에서도 사용할 수 있다.
예) auth.module.ts
import { Module } from '@nestjs/common';
import { AuthService } from './auth.service';
import { AuthController } from './auth.controller';
import { UserModule } from '../user/user.module';
@Module({
imports: [UserModule],
controllers: [AuthController],
providers: [AuthService],
exports: [AuthService],
})
export class AuthModule {}
AuthModule은 UserModule을 가져와서 사용할 수 있다. 즉, UserModule에서 제공하는 서비스, 컨트롤러 등을 사용할 수 있게 된다.
AuthModule은 AuthController를 포함한다.
AuthService를 provider로 포함한다. 이 service는 controller에서 주입받아 사용할 수 있다.
AuthService를 다른 모듈에서도 사용할 수 있도록 내보낸다. 다른 모듈에서 AuthModule을 import하면, AuthService를 사용할 수 있다.