본문 바로가기

Express와 Nest

Express.js (Node.js Web Application Framework)

  • Node.js를 기반으로 하는 웹 애플리케이션 프레임워크
  • 빠르고 간결한 웹 애플리케이션 및 API를 구축하기 위해 사용
  • 미들웨어와 라우팅 기능을 간단하게 사용할 수 있도록 제공하며, Node.js의 기본 기능을 확장하여 웹 서버를 구성
  • RESTful API 개발에서 자주 사용

 

express 점유율

 

Express의 기본 개념

 

  • 미들웨어
    • 요청(request)과 응답(response) 객체에 접근하여 요청을 처리하거나 다음 미들웨어로 전달할 수 있는 함수
    • 미들웨어는 순서대로 실행, 각 미들웨어가 하는 일이 다름 : 요청 로깅, 인증 처리, 특정 경로로 요청을 라우팅 등
  • 라우팅
    • 클라이언트 요청 URL을 분석하여 그에 해당하는 처리기를 실행하는 기능
    • 다양한 HTTP 메소드(GET, POST, PUT, DELETE 등)에 따른 요청을 처리
  • 템플릿 엔진
    • Express는 동적 HTML 페이지를 생성하기 위해 다양한 템플릿 엔진(e.g., Pug, EJS, Handlebars 등)을 지원
    • 템플릿 엔진을 사용하면 JavaScript 데이터를 HTML에 삽입하여 동적으로 페이지를 생성
  • RESTful API
    • HTTP 메소드를 사용하여 클라이언트와 서버 간에 데이터를 주고받는 API 스타일
    • Express는 RESTful API 구축에 최적화

Nest.js: TypeScript 기반의 Node.js 웹 프레임워크

  • Node.js를 위한 점진적인 프레임워크로 효율적이고 신뢰할 수 있는 확장 가능한 서버측 애플리케이션을 구축하기 위해 설계
  • TypeScript를 기본 언어로 사용하며, 객체지향 프로그래밍(OOP), 함수형 프로그래밍(FP), 함수형 반응형 프로그래밍(FRP)을 지원하여 구조적이고 확장 가능한 코드 작성 가능
  • Nest.js는 Angular에서 영감을 받아 모듈, 서비스, 컨트롤러 등의 개념을 도입하여 애플리케이션을 모듈화하고 재사용 가능한 구성 요소로 나눌 수 있음
  • 대규모 애플리케이션에서 특히 유용하며, 유지 보수성과 확장성을 극대화

 

Nest.js의 기본 개념

  • 모듈
    • Nest.js의 애플리케이션은 기본적으로 모듈들로 구성
    • 모듈은 하나 이상의 서비스, 컨트롤러, 그리고 다른 모듈들을 포함 가능
    • 기본적으로 모든 애플리케이션에는 AppModule이 있으며, 필요에 따라 기능별로 모듈을 추가
  • 컨트롤러:
    • 컨트롤러는 들어오는 요청을 처리하고, 클라이언트에 응답을 반환하는 역할
    • Nest.js의 컨트롤러는 특정 경로를 처리하며, 경로에 매핑된 메소드로 HTTP 요청을 처리
  • 서비스
    • 애플리케이션의 비즈니스 로직을 캡슐화
    • 일반적으로 컨트롤러가 요청을 받으면, 요청을 서비스로 전달하여 로직을 처리한 후 결과를 반환
    • 서비스는 주입 가능한 프로바이더로, 의존성 주입(DI) 시스템을 통해 컨트롤러나 다른 서비스에서 사용 가능
  • 프로바이더
    • 서비스뿐만 아니라, 다양한 프로바이더 정의 가능
    • 프로바이더는 애플리케이션에서 재사용 가능한 로직을 캡슐화하며, 다른 구성 요소에 의존성을 주입하는 데 사용
  • 데코레이터:
    • Nest.js는 데코레이터를 사용하여 클래스와 메소드에 메타데이터를 추가
    • 예를 들어, @Controller, @Get, @Post, @Injectable과 같은 데코레이터가 있음, 코드의 가독성을 높임
  • 의존성 주입(DI)
    • Nest.js는 강력한 의존성 주입 메커니즘을 제공
    • DI는 객체 간의 의존성을 명시적으로 주입할 수 있게 하여 코드의 테스트와 유지보수를 용이하게 함
  • 파이프(Pipes)
    • 파이프는 들어오는 요청 데이터를 변환하거나 유효성을 검사하는 데 사용
    • 예를 들어, 클라이언트에서 전송된 데이터를 특정 형식으로 변환하거나, 유효성 검사를 통해 잘못된 데이터가 처리되지 않도록 가능
  • 가드(Guards)
    • 가드는 요청을 처리하기 전에 특정 조건을 만족하는지 확인하는 데 사용
    • 주로 인증 및 권한 부여 로직을 구현하는 데 활용
  • 미들웨어
    • Express.js와 마찬가지로, Nest.js에서도 미들웨어를 사용할 수 있음
    • Nest.js의 미들웨어는 애플리케이션 레벨에서 요청과 응답을 처리하거나, 로깅, 인증 등과 같은 작업을 수행하는 데 사용
  • 인터셉터
    • 인터셉터는 요청과 응답을 가로채고, 추가적인 로직을 삽입하거나 수정할 수 있는 기능을 제공
    • 응답 데이터에 메타데이터를 추가하거나, 응답 시간을 로깅하는 등의 작업을 수행

 

  • Express.js는 간단하고 가볍지만, 구조화와 타입 안전성 면에서 제한적.
    • 빠른 프로토타이핑과 간단한 API 서버를 구축하는 데는 매우 유용
  • Nest.js는 더 구조적이고 강력한 기능을 제공, 대규모 애플리케이션에서 특히 유리
    • 학습 곡선이 높고 초기 설정이 복잡할 수 있으므로, 프로젝트의 규모와 요구 사항에 따라 선택 필요

 

 

'' 카테고리의 다른 글

웹 애니메이션  (0) 2024.08.28
Event Delegation  (0) 2024.08.27
DOM  (0) 2024.08.21
CSS Selector  (0) 2024.08.21
CSS  (0) 2024.08.19