Nestjs는 효율적이고, 안정적이며, 확장에 용이한 서버 어플리케이션을 구축하기 위한 진보된 nodejs 프레임워크입니다.
NestJS는 Express와 같은 서버 프레임워크로, Express는 굉장히 쉽게 서버를 만들 수 있게 만들어 줬지만 시스템 디자인 측면에서 지원하는 것은 거의 없기 때문에 이러한 문제를 해결하고자 나온 프레임워크가 NestJS이다.
NestJS는 Typescript 기반의 OOP(Object Oriented Programming), FP(Functional Programming), FRP(Functional Reactive Programming)를 지원합니다.
👉 참조 Typescript란?
이미지 출처
기본 컨셉은 Provider(상기 이미지에선 service), Controller를 module로 합치고,
그 모듈들을 최종적으로 app.module에 합쳐서 사용하는 것이다.
NestJS는 Singleton 패턴을 지향하기 때문에 인스턴스를 직접 생성하지 않고 모듈을 통해 Injection 하는 패턴을 권장하고있다.
직접 인스턴스를 생성하여 등록하는 방법도 지원하는데, 보통 전역적으로 적용해야할 Provider들에 사용한다.
(다만 권장하는 방식은 아니다. 인스턴스 생성을 NestJS에게 맡기는 것을 권장한다.)
BackEnd에서 흔히 사용하는 Controller 개념 그대로 생각하면 된다.
처음 요청이 들어오는 입구 역할을 담당하며, 비즈니스 로직을 따로 분리하기 위해 진입점을 따로 분리해둔 것이다.
쉽게 설명하자면 식당에 들어갔을 때 좌석을 안내해주는 직원을 생각하면 된다.
HTTP Request에 따라 어떠한 비즈니스 로직을 적용시킬지에 대한 설정을 하면 된다.
Provider는 NestJS의 거의 모든 데이터 처리 및 비즈니스 로직을 담당한다.
다만 역할에 따라 이름이 달라진다.
Module은 Provider와 Controller를 합치는 역할을 한다.
뿐만 아니라 다른 Module이 Provider를 사용할 수 있게 export 처리를 하거나
필요한 Provider가 있는 모듈을 Import해서 사용할 수 있게 만들어준다.
NestJS는 클라이언트의 요청별로 Controller와 Provider를 제작하고 이를 Module로 엮어 하나의 단위를 만든다고 할 수 있다.
⭐Nest.js 장점⭐
❗참조 및 출처❗
찍어먹는 NestJS - 기본개념
[nestjs] - nestjs 소개