Nest.js

Hyunjun Jang·2022년 2월 2일
0

Nest.js란?

nest(NestJS)는 효율적이고 확장 가능한 Node.js 기반 서버 애플리케이션을 구축하기 위한 프레임워크이다. JavaScript를 사용하고 TypeScript로 구축 할수 있도록 완벽하게 지원하며 OOP(객체 지향 프로그래밍), FP(기능 프로그래밍) 및 FRP(기능 반응 프로그래밍)의 요소를 결합한다.

내부적으로 Nest는 Express (기본값)와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify 도 사용하도록 구성할 수 있다.

Node.js는 손쉽게 사용할 수 있고 뛰어난 확장성을 가지고 있지만, 과도한 유연함으로 인해 SW의 품질이 일정하지 않고 알맞은 라이브러리를 찾기 위해 사용자가 많은 시간을 할애해야 한다. 이에 반해 NestJS는 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다. 그러면서도 필요한 라이브러리를 쉽게 설치하여 기능을 확장할 수 있는 Node.js 장점은 그대로 가지고 있다.

기능

JavaScript의 상위 개념인 강력한 형식의 언어인 TypeScript를 활용한다.

  • 사용하기 쉽고 상세하고 잘 관리된 문서로 인한 학습이 쉬움
  • 생산성과 개발 용이성을 향상시키는 강력한 명령줄 인터페이스(CLI)
  • 코드베이스 개발 및 유지 관리
  • 오픈 소스(MIT 라이선스)
  • TypeORM, Mongoose, GraphQL, Logging, Validation, Caching, WebSockets 등과 같은 일반적인 기술 및 개념과 쉽게 통합하는 데 도움이 되는 수십 개의 모듈 지원
  • 쉬운 단위 테스트 애플리케이션
  • Monoliths 및 Micro-services용으로 제작됨(Microservice 유형의 NestJS 애플리케이션과 기술 및 레시피에 관한 문서의 전체 섹션

프로젝트 생성

 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 안에 생성이 되고 간략하게 설명하자면 아래와 같다.

  • app.controller.ts : 하나의 라우터가 있는 기본 컨트롤러
  • app.controller.spec.ts : 컨트롤러를 위한 유닛 테스트
  • app.module.ts : 애플리케이션의 루트 모듈
  • app.service.ts : 단일 메서드를 사용하는 기본 서비스
  • main.ts : 핵심 기능 NestFactory를 사용하여 Nest 애플리케이션 인스턴스를 생성하는 애플리케이션의 엔트리 파일

실행

main.ts 소스 파일에서 기본 포트가 3000번으로 설정되어 있는것을 확인 할수 있으며 아래와 같이 실행하여 localhost:3000 으로 접속이 되는지 확인한다.

npm run start:dev

Reference

https://docs.nestjs.com/
https://wikidocs.net/147787

profile
Let's grow together😊

0개의 댓글