nest(NestJS)는 효율적이고 확장 가능한 Node.js 기반 서버 애플리케이션을 구축하기 위한 프레임워크이다. JavaScript를 사용하고 TypeScript로 구축 할수 있도록 완벽하게 지원하며 OOP(객체 지향 프로그래밍), FP(기능 프로그래밍) 및 FRP(기능 반응 프로그래밍)의 요소를 결합한다.
내부적으로 Nest는 Express (기본값)와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify 도 사용하도록 구성할 수 있다.
Node.js는 손쉽게 사용할 수 있고 뛰어난 확장성을 가지고 있지만, 과도한 유연함으로 인해 SW의 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 한다. 이에 반해 NestJS는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다. 그러면서도 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점은 그대로 가지고 있다.
JavaScript의 상위 개념인 강력한 형식의 언어인 TypeScript를 활용한다.
npm i -g @nestjs/cli
//nest 설치 후 다음 명령어를 입력하면 폴더 이름을 묻는 질문과 함께 구조를 만들어 폴더가 생성된다.
nest new project-name
cli로 프로젝트를 생성하면 애플리케이션을 구성하는 파일들이 아래와 같은 구조로 생성이 된다.
1 .
2 ├── README.md
3 ├── nest-cli.json
4 ├── package.json
5 ├── src
6 │ ├── app.controller.spec.ts
7 │ ├── app.controller.ts
8 │ ├── app.module.ts
9 │ ├── app.service.ts
10 │ └── main.ts
11 ├── test
12 │ ├── app.e2e-spec.ts
13 │ └── jest-e2e.json
14 ├── tsconfig.build.json
15 ├── tsconfig.json
16 ├── tslint.json
17 └── yarn.lock
코어소스코드는 src 안에 생성이 되고 간략하게 설명하자면 아래와 같다.
main.ts 소스 파일에서 기본 포트가 3000번으로 설정되어 있는것을 확인 할수 있으며 아래와 같이 실행하여 localhost:3000 으로 접속이 되는지 확인한다.
npm run start:dev