A Developing Developer

DAY 62. Nest.js 입문 주차 본문

내일배움캠프 4기/TIL

DAY 62. Nest.js 입문 주차

H-JJOO 2023. 2. 10. 21:41
  • 문제발생

발표

  • 시도

-

  • 해결방안

-

  • 알게 된 것
  • 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