[Nestjs Study] 1. Nestjs는?

hiio420.official·2025년 5월 27일

nestjs

목록 보기
1/7

Hello, nest


NestJS에 대해서 처음 접했던 건 아르바이트로 참여했던 프로젝트에서 사용했던 스택으로 시작합니다. 기존에는 Spring 또는 전자정부프레임워크로 진행하는 SI 프로젝트에 참여하고 있었습니다.
Javascript로 기존의 화면 기능에대한 부분을 개발하고 있었기 때문에 언어에 대한 부담감은 없었지만, 새로운 프레임워크를 사용한다는 건 언제나 두근두근 하게 만드는 것 같습니다.

막연하게나마 어떻게 개발을 하게 될까라는 호기심으로 배움으로 또는 새로운 영역에 대한 확장으로 이어질 수 있지 않을까라는 기대감을 가지게 됩니다.

처음 프레임워크나 라이브러리를 사용할때 다들 어떻게 하시나요 ?
요즘은 아무래도 Chatgpt를 사용하거나, Cursor나 windsurf등으로 개발을 하게되면 쉽게 특정 부분에 대한 내용을 바로 코딩해주기 때문에 편할 걸로 생각됩니다.

스터디 겸 정리 겸 nestjs 공식문서를 참고해 볼 까 합니다.

NestJS

Introduction


Nest (NestJS) is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with and fully supports TypeScript (yet still enables developers to code in pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
Under the hood, Nest makes use of robust HTTP Server frameworks like Express (the default) and optionally can be configured to use Fastify as well!
Nest provides a level of abstraction above these common Node.js frameworks (Express/Fastify), but also exposes their APIs directly to the developer. This gives developers the freedom to use the myriad of third-party modules which are available for the underlying platform.출처

공식문서에서 소개하는 NestJS에 대한 내용입니다.

요약하면

  • NestJS는 효율적이고 확장 가능한 Node.js 기반 서버 프레임워크

  • pure Javascript 와 Typescript 작성 및 지원

  • 객체지향 프로그래밍(OOP)

    객체지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터를 객체로 모델링하여 소프트웨어를 설계하는 프로그래밍 패러다임입니다. 각 객체는 속성(데이터)과 메서드(동작)를 포함하며, 주요 특징으로는 캡슐화, 상속, 다형성, 추상화가 있습니다.

  • 함수형 프로그래밍 (FP)

    함수형 프로그래밍(Functional Programming, FP)은 순수 함수를 기반으로 하는 선언형 프로그래밍 패러다임입니다. 상태 변경이나 부작용을 피하고, 함수를 일급 시민으로 취급하여 고차 함수, 불변성, 함수 합성 등을 강조합니다.

  • 함수형 반응형 프로그래밍(FRP)

    함수형 반응형 프로그래밍(Functional Reactive Programming, FRP)은 함수형 프로그래밍과 반응형 프로그래밍을 결합한 패러다임으로, 시간에 따라 변하는 데이터 흐름을 선언적으로 모델링합니다. 이벤트 스트림과 동작(behavior)을 조합하여 비동기 데이터 흐름을 효율적으로 처리합니다.

  • 기본적으로 Express를 사용

    Express는 Node.js를 위한 빠르고 유연한 웹 애플리케이션 프레임워크로, 최소한의 기능으로 웹 및 모바일 애플리케이션을 구축할 수 있도록 지원합니다. 라우팅, 미들웨어, HTTP 유틸리티 메서드 등을 제공하여 RESTful API 개발에 널리 사용됩니다.

  • 선택적으로 Fastify로 구성할 수 있음

    Fastify는 Node.js를 위한 고성능 웹 프레임워크로, 낮은 오버헤드와 강력한 플러그인 아키텍처를 특징으로 합니다. Express보다 빠른 요청 처리를 목표로 하며, JSON 직렬화 및 비동기 처리를 최적화하여 대규모 애플리케이션에 적합합니다.

  • Node.js 프레임워크(Express/Fastify) 위에 추상화 계층 제공, 동시에 개발자에게 API를 직접 노출

  • 수많은 서드 파티 모듈들을 자유롭게 사용가능

위와 같은 내용으로 설명하고 있습니다.

nestjs를 시작하려면 어떻게 해야할까요?

Nest CLI


먼저 nest CLI 를 사용하기 위한 패키지 설치를 해야합니다.공식 문서에서는 npm을 이용해 패키지를 관리합니다.

npm install -g @nestjs/cli

@nestjs/cli 패키지를 글로벌로 설치하면 nest 명령어를 사용할 수 있습니다.

nest --help

보통 cli 커맨드에서 제공하는 --help를 nest cli에서 사용하면 nest cli 에서 사용가능한 명령어 목록을 볼 수 있습니다.


Options:
  -v, --version                                   Output the current version.
  -h, --help                                      Output usage information.

Commands:
  new|n [options] [name]                          Generate Nest application.
  build [options] [apps...]                       Build Nest application.
  start [options] [app]                           Run Nest application.
  info|i                                          Display Nest project details.
  add [options] <library>                         Adds support for an external library to your project.
  generate|g [options] <schematic> [name] [path]  Generate a Nest element.
    Schematics available on @nestjs/schematics collection:
      ┌────────────────┬──────────────┬───────────────────────────────────────────────────┐
      │ name          │ alias       │ description                                  │
      │ application   │ application │ Generate a new application workspace         │
      │ class         │ cl          │ Generate a new class                         │
      │ configuration │ config      │ Generate a CLI configuration file            │
      │ controller    │ co          │ Generate a controller declaration            │
      │ decorator     │ d           │ Generate a custom decorator                  │
      │ filter        │ f           │ Generate a filter declaration                │
      │ gateway       │ ga          │ Generate a gateway declaration               │
      │ guard         │ gu          │ Generate a guard declaration                 │
      │ interceptor   │ itc         │ Generate an interceptor declaration          │
      │ interface     │ itf         │ Generate an interface                        │
      │ library       │ lib         │ Generate a new library within a monorepo     │
      │ middleware    │ mi          │ Generate a middleware declaration            │
      │ module        │ mo          │ Generate a module declaration                │
      │ pipe          │ pi          │ Generate a pipe declaration                  │
      │ provider      │ pr          │ Generate a provider declaration              │
      │ resolver      │ r           │ Generate a GraphQL resolver declaration      │
      │ resource      │ res         │ Generate a new CRUD resource                 │
      │ service       │ s           │ Generate a service declaration               │
      │ sub-app       │ app         │ Generate a new application within a monorepo │
      └────────────────┴───────────────┴──────────────────────────────────────────────────┘

프로젝트 생성


프로젝트 생성은 new 명령어를 통해 생성합니다.

nest new <project_name>

공식문서에서는 starter 프로젝트를 제공합니다.

git clone https://github.com/nestjs/typescript-starter.git project
cd project
npm install
npm run start

프로젝트를 실행하면 http://localhost:3000 주소로 접속
어떤 프로그래밍이든 처음 시작하면 만날 수 있는 Hello World 문구가 보입니다.

마무리


여기까지 NestJS에 대한 설명을 공식문서를 통해서 알아보고 starter 프로젝트를 실해시켜 보았습니다.

처음이지만 다른 프레임워크들과 마찬가지로 설치나 프로젝트 생성은 nodejs, npm을 통해서 쉽게 사용할 수 있어 좋은 것 같습니다.

다음은 starter 프로젝트와 공식문서를 함께 살펴보면서 프로젝트 구조는 어떻게 되어 있는지 알아보면 좋을 거 같습니다.

0개의 댓글