NestJs 소개

jimin·2022년 5월 2일
0

nodeJs

목록 보기
1/5
post-thumbnail

NestJs 소개

Nestjs는 효율적이고, 안정적이며, 확장에 용이한 서버 어플리케이션을 구축하기 위한 진보된 nodejs 프레임워크이다.

  • NestJS는 기본적으로 Typescript를 지원하며 Javascript로 애플리케이션을 작성하는 것도 가능하다
  • NestJS는 시 Express를 HTTP 서버 프레임워크(기본)를 사용하며 그 위에 여러 기능을 미리 구현해 놓은 것이다.
    • 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공
    • Express와 fastify를 기본으로 지원 (기본이 Express인 이유는 더 널리 사용되고 잘 알려져있기때문에)
  • Nest는 다음 요소를 포함
    • OOP - 객체지향 프로그래밍
    • FP - Functional 프로그래밍
    • FRP - Functional React 프로그래밍
  • IoC, DI, AOP와 같은 객체지향 개념을 도입
  • Angualr로부터 영향을 많이 받았다. (모듈/컴포넌트 기반)

Nest.js 시작하기

Nest.js 설치

$ npm i -g @nestjs/cli // Nestjs cli를 설치 

$ nest new projectName // 프로젝트 생성

생성시 기본 구조

구조

  • app.controller.spec.ts : app.controller.ts 파일을 테스트하는 파일

  • app.controller.ts :

    하나의 라우트가 있는 파일 (req, res 처리)

    • controller는 client의 요청에 대한 라우팅을 처리한다.

    • provider인 AppService에게 비즈니스 처리 요청을 보낸다.

    • 서비스에서 받은 결과를 client에 응답으로 보낸다.

      import { Controller, Get } from '@nestjs/common';
      import { AppService } from './app.service';
      
      @Controller()
      export class AppController {
        constructor(private readonly appService: AppService) {}
      
        @Get()
        getHello(): string {
          return this.appService.getHello();
        }
      }
  • app.module.ts

    • Nest.js 모듈
      - NestJS는 모듈의 집합이다.
      - NestJS는 하나 이상의 모듈이 반드시 있어야 한다.
      - 기능별로 모듈을 생성.
      - 각 모듈을 Root module에 imports
      - export를 통해 외부에서 module을 사용할 수 있다.
      import { Module } from '@nestjs/common';
      import { AppController } from './app.controller';
      import { AppService } from './app.service';
      
      @Module({
        imports: [], // module 가져오기 
        controllers: [AppController], // 모듈에서 사용하는 컨트롤러의 세트
        providers: [AppService], // NestJS의 injector에 의해 인스턴스화 되는 class
      })
      export class AppModule {} //모듈을 다른 모듈에서 사용하기 위함
  • app.service.ts :

    라우트의 로직을 작성하는 파일

    • controller의 요청을 받은 서비스는 비즈니스 로직을 처리한 후 controller에게 return

      import { Injectable } from '@nestjs/common';
      
      @Injectable()
      export class AppService {
        getHello(): string {
          return 'Hello World!';
        }
      }
  • main.ts

    시작소스

    import { NestFactory } from '@nestjs/core';
    import { AppModule } from './app.module';
    
    async function bootstrap() {
      const app = await NestFactory.create(AppModule);
      await app.listen(3000);
    }
    bootstrap();

nest.js VS express

Express는 웹 서버를 빠르게 구현하기 위해 개발 시 구조에 대한 자유도가 높고
Express를 사용하면서 여러 툴, 기술, 미들웨어 등을 마음껏 선택할 수 있다.

nest.js는 구조가 있고 데이터베이스, ORM, 설정(Configuration), 유효성 검사 등 수많은 기능을 기본 제공하고 있다.

Express는 가볍고 간편하고 빠르게 비교적 간단한 웹을 위한 서버를 만들기 좋다.

Nestjs는 통일성 있고 거대한 프로젝트를 만들기 좋다.

profile
안녕하세요 백엔드 개발자 지민입니다.

0개의 댓글