Module / 캡슐화

2022. 9. 4. 17:15Nest.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