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

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 |