Module / 캡슐화
2022. 9. 4. 17:15ㆍNest.js
구성 요소를 구성하는 효과적인 방법으로 모듈을 사용
어떤 느낌으로 받아들였냐면, 교통정리 해주는 느낌이다.
너는 여기서 받아들여서 쓸거고(imports), 너는 소비자고(controllers) , 너는 공급자고(providers) ,
너는 딴데서도 쓸 수 있게할거고(exports)~
//boards.module.ts
@Module({
imports: [
TypeOrmModule.forFeature([BoardRepository])
],
controllers: [BoardsController],
providers: [BoardsService]
})
export class BoardsModule {}
nest 공식 문서
providers | Nest 인젝터에 의해 인스턴스화되고 적어도 이 모듈에서 공유될 수 있는 제공자 |
controllers | 인스턴스화해야 하는 이 모듈에 정의된 컨트롤러 세트 |
imports | 이 모듈에 필요한 공급자를 내보내는 가져온 모듈 목록 |
exports | 그 하위 집합은 providers이 모듈에서 제공하며 이 모듈을 가져오는 다른 모듈에서 사용할 수 있어야 합니다. 공급자 자체 또는 해당 토큰( provide값) 만 사용할 수 있습니다. |
캡슐화 (encapsulation)
객체(object)의 속성과 행위(method)를 하나로 묶고, 구현된 일부를 감추어 은닉한다.(은닉 hiding)
exports 하면 은닉(private 한 상태 -> public) 으로 변경해주는 듯. -> 공유 모듈
아래 예시.
import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
@Module({
controllers: [CatsController],
providers: [CatsService],
exports: [CatsService]
})
export class CatsModule {}
CatsService 여러 다른 모듈 간에 의 인스턴스를 공유하려고 한다면 먼저 위와 같이 모듈의 배열에 공급자를 추가 하여 공급자를 내보내야 한다. CatsService exports
이제 가져오는 모든 모듈 CatsModule은 에 액세스할 수 있으며 CatsService를 가져오는 다른 모든 모듈과 동일한 인스턴스를 공유한다.
'Nest.js' 카테고리의 다른 글
예외처리 (0) | 2022.09.06 |
---|---|
미들웨어 (0) | 2022.09.06 |
Providers/ DI (0) | 2022.09.04 |
Controller (0) | 2022.09.04 |
DTO & 유효성 검사 (ValidationPipe) (0) | 2022.08.27 |