progressive Javascript를 사용하고 TypeScript로 빌드가 지원된다.
Nest는 OOP(Object Oriented Programming), FP(Functional Programming) 및 FRP(Functional Reactive Programming)을 사용할 수 있게 해준다.
ORM,데이터베이스,설정(Configuration),유효성 검사 등 수많은 기능을 기본으로 제공한다.
모듈/컴포넌트 기반으로 프로그램을 작성함으로써 재사용성을 높여준다.
IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect Oriented Programming)와 같은 객체지향 개념을 도입했다.
타입스트립트를 기본으로 채택하여 타입스크립트가 가진 타입시스템의 장점을 가진다.
SetUp
Nest CLI를 사용하면 프로젝트 생성이 쉽게 가능하다.
npm or yarn 이 설치된 상태에서 Nest 프로젝트를 쉽게 만들 수 있다.
$ yarn add -g @nestjs/cli
$ nest new project-name
TypeScript의 엄격 모드를 활성해 생성하려면 --stricct 플래그를 nest new 명령어에 전달
프로젝트 디렉토리가 생성되고, node_modules과 몇 가시 파일이 설치되며 src/ 디렉토리가 생성되어 여러 코어파일로 채워진다.
생성시 폴더 구조
src
ㄴ--app.controller.spec.ts # 컨트롤러에 대한 unit test
ㄴ--app.controller.ts # 단일 경로가 있는 기본 컨트롤러 (라우팅)
ㄴ--app.module.ts # root module (메타데이터를 담당)
ㄴ--app.service.ts # 단일 메서드를 사용하는 기본 서비스 (비즈니스 로직)
ㄴ--main.ts # NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 엔트리 파일
간단 프로젝트 생성 명령어
# module 생성
$ nest g module || mo name
# controller 생성
$ nest g controllser || co name
# service 생성
$ nest g service || s name
# CRUD 템플릿을 생성
$ nest g ressource name
# g == generate
# --no-spect 테스트 파일 미생성