본문 바로가기

공부

Express와 NestJS의 차이?

Express와 NestJS는 둘 다 Node.js 환경에서 사용되는 서버 사이드 웹 프레임워크지만, 설계 철학과 기능에서 큰 차이가 있음

 

 

  • Express: Express는 경량의 웹 애플리케이션 프레임워크로, 간단하고 유연한 구조를 가진 미들웨어 기반의 아키텍처
    라우팅과 요청 처리를 위해 매우 직관적이며 최소한의 설정만으로 서버 구축 가능
    커뮤니티와 생태계가 크며, 다양한 미들웨어와 플러그인을 통해 확장 가능

  • NestJS: NestJS는 Express를 내부적으로 사용하는 더 고수준의 프레임워크
    Angular의 영향을 받아 모듈화와 데코레이터를 통한 구성 요소 기반의 설계를 채택
    타입스크립트로 작성되어 있으며, 객체 지향 프로그래밍(OOP), 함수형 프로그래밍(FP), 그리고 함수 반응형 프로그래밍(FRP)의 요소를 결합하여 강력한 애플리케이션 설계 제공

장점:

  • Express:
    • 가볍고 빠르며 설정이 간단
    • 자유도가 높아 필요한 기능만 선택적으로 사용
    • 대규모 커뮤니티와 풍부한 미들웨어로 인한 확장성
  • NestJS:
    • 아키텍처가 잘 정의되어 있어 대규모 애플리케이션 개발에 적합
    • 타입스크립트 지원으로 코드의 안정성과 생산성
    • 의존성 주입, 모듈화 등 엔터프라이즈급 기능을 기본 제공하여 구조화된 개발

단점:

  • Express:
    • 구조가 정해져 있지 않아 대규모 프로젝트에서 유지보수가 어려울 수 있음
    • 코드의 일관성을 유지하기 위해 팀 내 코딩 표준을 엄격하게 관리
    • 직접 구현해야 할 부분이 많아 복잡한 애플리케이션 개발 시 불편할 수 있음
  • NestJS:
    • 학습 곡선이 높아 초기 도입이 어려울 수 있음
    • 비교적 무겁고 설정이 복잡할 수 있음
    • Express보다 성능 면에서 약간의 오버헤드가 발생

사용 예시:

  • Express 사용 예시 - 간단한 REST API:  최소한의 코드로 간단한 서버를 설정할 수 있으며, 라우팅이 직관적
const express = require('express');
const app = express();

app.get('/hello', (req, res) => {
  res.send('Hello, Express!');
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

 

  • NestJS 사용 예시 - 기본 모듈과 컨트롤러:
// app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}
// app.controller.ts
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';

@Controller('hello')
export class AppController {
  constructor(private readonly appService: AppService) {}

  @Get()
  getHello(): string {
    return this.appService.getHello();
  }
}
// app.service.ts
import { Injectable } from '@nestjs/common';

@Injectable()
export class AppService {
  getHello(): string {
    return 'Hello, NestJS!';
  }
}

 

'공부' 카테고리의 다른 글

Titans: Learning to Memorize at Test Time  (1) 2025.01.21
추후 공부 할 것 기록  (0) 2024.09.04
서버 스케줄링이란  (0) 2024.08.31
시스템 설계란  (0) 2024.08.31
Spring과 Node.js  (1) 2024.08.30