Nest는 효율적이고 확장가능한Node.js진영의 애플리케이션을 구축하기 위한프레임워크프레임워크란? :
목적에 따라 효율적으로 구조를 짜놓는 개발 방식
TypeScript로 빌드되며, (순수 자바스크립트로도 코딩이 가능하다)Module을 감싸는 형태로 개발하기 때문에, Module별로 테스트 코드를 쉽게 작성할 수 있도록 구현되어있어, 안정적이다Pipe형태의 Vaildation이 내장돼있어 간편한 검증이 가능하다간결하고 유연한
Node.js기반의 애플리케이션을 구축하기 위한 프레임워크
Express로만 웹서버를 구축한다 예상해보자
B 개발자님 이 코드는 언제 호출되나요?C 개발자님이 개발하셔서 물어보셔야 할거같아요이런식으로 A,B개발자 모두 C의 아키텍처디자인 스타일을 설명받고 나서야 C 개발자의 코드가 이해가 된다
하지만
Nest.js는 아키텍처의 정의도 프레임워크에서 제공하기 때문에 개발자가 서로 작성한 코드의 구조를 쉽게 파악할 수 있다.

위에서 설명했듯이, Nest.js는 Module이 존재하며 Module이 관련된 기능을 요소로 가져, 싱글톤 방식으로 동일한 인스턴스를 공유 받을 수 있다.

Module안에는 Controller가 있는데 Controller는 Express의 Route와 비슷하다, 요청과 응답을 반환하는 역할을 맡는다.
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
여기서 String형태로 반환값이 있지만, Nest에서는 자동으로 JSON으로 직렬화를 하여 보내준다

그리고 Provider를 이용한 종속성 주입을 통해 Controller에 서비스를 주입한다.
Provider는 서비스,레포지토리,팩토리,헬퍼 등등 여러 Provider들이 존재한다.
Nest.js를 왜쓰는지에 대해서 다시한번 공부를 해봤다, 아직 IoC, DI등 자세히 개념을 정리를 못했기에 한번더 정리할 예정