본문 바로가기

STUDY/Node.js

NestJS | 프로젝트 생성 및 실행

nuxt next nest차이점 알아보다가 갑자기 해보는 NestJS

NestJS

  • node.js 프레임워크
  • Java에 Spring이 있다면, node.js에는 NestJS가 있다..
  • 요즘 굉장히 핫하다고 함 (이건 못참지)
  • TypeScript 완벽지원
  • 엔터프라이즈용 프레임워크다~
  • 스프링을 해봤다면 쉽게 적응할 수 있다고 한다!
  • expressfastify 플랫폼 지원 (express가 기본)

install

설치 후 nest입력 해 설치 확인

$ npm i -g @nestjs/cli

$ nest

아, node가 설치되어 있어야 한다.. 당연히..

project setting

CLI를 설치했으니 이제 프로젝트를 생성할 수 있다. nest new로 생성

$ nest new project-name

project folder structure

/src폴더 안을 보면 이미 컨트롤러, 서비스가 만들어져 있다.

  • app.controller.ts : 기본으로 생성되는 컨트롤러. 하나의 라우트가 작성돼있다
  • app.controller.spec.ts : 컨트롤러 유닛테스트
  • app.module.ts : root module
  • app.service.ts : 기본으로 생성되는 서비스. 하나의 메서드가 작성돼있다
  • main.ts : 핵심 메서드인 NestFactory를 호출하고 있는 파일. Nest application 인스턴스를 생성한다.
├── src
│   ├── app.controller.spec.ts
│   ├── app.controller.ts
│   ├── app.module.ts
│   ├── app.service.ts
│   └── main.ts

run!

http://localhost:3000으로 접속 가능하다.

& npm run start

Hello World!가 출력되는 이유를 알아보자

  1. main.tsNestFactory를 통해 Nest 애플리케이션을 실행시켰다.
  2. AppModuleapp.module.ts에서 정의하고 있는데, 여기서 컨트롤러와 서비스를 부르고 있다.
  3. app.controller.ts에서 생성자로 AppService의존성 주입을 받고 있고, this.appService.getHello();를 호출한다.
  4. app.service.ts에 정의된 getHello()메서드가 Hello World!를 반환하고 있다.

스프링을 경험해봤다면 정말 바로 이해될것..
컨트롤러를 보면 @Controller()를 볼 수 있다. 자바에서는 애노테이션이라 부르던 그것.. Nest에서는 데코레이터라 부른다.