A Developing Developer
DAY 62. Nest.js 입문 주차 본문
- 문제발생
발표
- 시도
-
- 해결방안
-
- 알게 된 것
- main.ts
- main.ts 파일명은 절대로 임의로 파일 이름을 변경하지 않는다!
- AppModule 이라는 모듈을 루트 모듈로 사용하는 Nest.js 어플리케이션 인스턴스를 생성해
const app = await NestFactory.create(AppModule);
- app.module.ts
- Nest.js 에서 모듈은 레이어드 아키텍처 패턴을 구성하는 컴포넌트들을 매니징한다.
- @ : @ (Spring 에서는 어노테이션이라던데...) 데코레이터 라고 한다. 해당 클래스나 함수가 어떤 역하을 수행하는지에 대해 Nest.js 에 알려주는 역할을 한다.
- @Module
- imports : 필요한 모듈의 집합을 정의, 프로바이더(서비스)를 노출, HttpModule(API 호출 모듈) 이 대표적, TypeOrmModule 을 이용하여 리포지토리를 가져오기도 함.
- controllers : 컨트롤러를 정의
- providers : 서비스를 정의
- exports : 노출시킬 서비스를 정의, 다른 모듈에서 해당 모듈을 사용하기 위해서는 exports 로 노출해야 함.
- app.contorller.ts
- @Contorller 라는 데코레이터를 통해 AppContorller 클래스가 컨트롤러 역할을 하는 것을 Nest.js 에게 알려준다.
- 컨트롤러는 서비스를 반드시 의존해야 하며 이는 생성자를 통한 DI로 해결해야한다.
- app.service.ts
- @Injectable 이라는 데코레이터를 통해 AppService 클래스가 서비스 역하을 하는 것을 Nest.js 에게 알려준다.
- 서비스 객체는 실제로 리포지토리를 의존하며 비지니스 로직 실행을 담당한다.
- 서비스는 리포지토리를 반드시 의존해야 하며 이는 생성자를 통한 DI로 해결해야한다.
- app.contorller.spec.ts
- AppContoroller 를 Jest 라는 테스트 프레임워크를 통해서 테스트하는 코드이다.
- IoC & DI
- IoC (Inversion of Control) : 제어 역전, 객체의 생명주기 관리 자체를 Nest.js IoC 컨테이너에 위임, 모듈 간 결합도를 낮추기 때문에 하나의 모듈이 변경되어도 다른 모듈에는 영향을 최소화하여 지속 가능하고 확장성 있게 해준다.
- DI : IoC를 수행하는 방법 중 하나이며, Nest.js 에서는 생성자를 통한 DI를 가장 기본적으로 한다.
constructor(private readonly appService: AppService) {}
[결론]
당연하게도 아직 Nest.js 로 어떤식으로 개발이 진행되는지 모르겠다.
본격적인 실습 코딩으로 알아보자.
'내일배움캠프 4기 > TIL' 카테고리의 다른 글
DAY 64. 이론 공부(1) (0) | 2023.02.14 |
---|---|
DAY 63. Nest.js 입문 주차 (0) | 2023.02.13 |
DAY 61. Nest.js 입문 주차 (0) | 2023.02.09 |
DAY 60. 4번째 팀 프로젝트 발표 (0) | 2023.02.09 |
DAY 59. SORS Error (0) | 2023.02.08 |