[Node.js – 기초 강좌] 4. Express Framework (소개, 사용방법)

웹 애플리케이션을 개발할 때, 빠르고 효율적으로 서버를 구성하는 것은 매우 중요합니다.

이때 도움이 되는 것이 바로 Express 프레임워크입니다.

Express는 Node.js 환경에서 동작하는 경량의 웹 프레임워크로, 단순하면서도 강력한 기능을 제공합니다.

이번 포스팅에서는 Express의 개요와 특징, 그리고 TypeScript를 활용하여 Express 프로젝트를 생성하고 애플리케이션을 초기화하는 방법에 대해 자세히 알아보겠습니다.

Express 소개

Express란 무엇인가?

Express는 Node.js의 대표적인 웹 애플리케이션 프레임워크로, 빠르고 간편하게 서버를 구축할 수 있도록 도와줍니다.

다양한 미들웨어와 플러그인을 통해 확장성이 뛰어나며, HTTP 메서드 및 URL 라우팅을 손쉽게 처리할 수 있습니다.

간단한 API 서버부터 복잡한 웹 애플리케이션까지 다양한 용도로 사용됩니다.

Express의 특징과 장점

Express는 다음과 같은 여러 가지 특징과 장점을 가지고 있습니다:

  1. 경량화: Express는 불필요한 기능을 배제하고 필요한 기능만 제공하여 경량화되었습니다.
  2. 유연성: 미들웨어를 사용하여 다양한 기능을 쉽게 추가할 수 있습니다.
  3. 라우팅: HTTP 메서드와 URL을 기반으로 요청을 처리하는 강력한 라우팅 기능을 제공합니다.
  4. 빠른 개발 속도: 설정이 간단하여 빠르게 애플리케이션을 개발할 수 있습니다.
  5. 커뮤니티 지원: 큰 커뮤니티와 다양한 플러그인, 모듈이 지원되어 쉽게 확장 가능합니다.

유용한 Middleware 종류

  • body-parser
    • 요청 본문을 파싱하여 req.body로 접근할 수 있게 합니다.
    • JSON 및 URL 인코딩된 데이터 처리를 위해 사용됩니다.
  • cookie-parser
    • 요청에 포함된 쿠키를 파싱하여 req.cookies로 접근할 수 있게 합니다.
    • 세션 관리 및 인증 등에서 유용합니다
  • express-session
    • 세션 관리를 위해 사용됩니다.
    • 로그인 상태 유지 등 세션 기반 작업에 필요합니다
  • cors
    • Cross-Origin Resource Sharing을 설정하여 다른 도메인에서의 요청을 허용합니다.
    • 외부 클라이언트에서 API를 호출할 때 유용합니다.
  • compression
    • 응답을 gzip 방식으로 압축하여 전송합니다.
    • 응답 크기를 줄여 전송 속도를 높일 수 있습니다.
  • passport
    • 다양한 인증 전략을 통합할 수 있는 미들웨어입니다.
    • 소셜 로그인, 로컬 로그인 등 다양한 방법을 지원합니다.

Express 외 Node.js에서 사용하는 Web Frameworks

Koa

Koa는 Express의 창시자들이 만든 차세대 웹 프레임워크로, 더 간결하고 강력한 기능을 제공합니다. Koa는 미들웨어를 구성하는 새로운 방식인 async/await을 도입하여 비동기 처리를 더 쉽게 할 수 있게 해줍니다.

  • 특징: 가벼움, 미들웨어 구성의 유연성, async/await 지원
  • 장점: 최소한의 코어로 구성되어 확장성 높음, 간결하고 직관적인 코드 작성 가능

Hapi

Hapi는 보안과 확장성에 중점을 둔 프레임워크로, 다양한 기능을 제공하는 플러그인 시스템을 갖추고 있습니다.

API 서버 구축에 적합하며, 설정과 구성에 많은 유연성을 제공합니다.

  • 특징: 플러그인 시스템, 뛰어난 보안 기능, 풍부한 문서화
  • 장점: 모듈화된 구조로 확장성과 유지보수성이 높음, 다양한 인증 및 권한 부여 기능 지원

Sails.js

Sails.js는 Ruby on Rails에서 영감을 받아 만들어진 프레임워크로, MVC(Model-View-Controller) 패턴을 따릅니다.

데이터 중심의 애플리케이션 개발에 적합하며, 자동으로 RESTful API를 생성해주는 기능을 제공합니다.

  • 특징: MVC 패턴, 자동 생성되는 RESTful API, WebSocket 지원
  • 장점: 빠른 프로토타이핑 가능, 데이터베이스 어댑터를 통해 다양한 DB 지원

NestJS

NestJS는 TypeScript를 기본으로 사용하는 프레임워크로, Angular에서 영감을 받아 만들어졌습니다.

모듈화된 구조와 데코레이터를 사용한 선언적 프로그래밍 방식이 특징입니다.

대규모 애플리케이션 개발에 적합합니다.

NestJS Framework는 앞서서 강의를 진행했으니 참조해주세요.

https://devitworld.com/category/coding/nestjs

  • 특징: TypeScript 지원, 모듈화된 구조, 데코레이터 기반의 선언적 프로그래밍
  • 장점: 강력한 타입 시스템과 인텔리센스를 제공하여 코드 안정성 및 유지보수성 향상, 다양한 마이크로서비스 아키텍처 지원

Fastify

Fastify는 성능에 중점을 둔 웹 프레임워크로, 빠른 속도와 저메모리 사용량을 자랑합니다.

비동기 처리와 플러그인 기반의 확장성을 제공합니다.

  • 특징: 높은 성능, 저메모리 사용량, 플러그인 시스템
  • 장점: 빠른 처리 속도, 간단하고 직관적인 API, JSON Schema를 이용한 유효성 검사 지원

Express 사용하기

Node.js에서 Express를 사용하는 방법을 알아보도록 하겠습니다.

우리는 Node.js에서 Typescript와 함께 사용할 것이기에 Node.js, Typescript, Express를 함께 사용하는 환경을 고려하여 진행될 것입니다.

Express 프로젝트를 TypeScript와 함께 생성하기 위해서는 Node.js, npm(Node Package Manager) 그리고 TypeScript가 필요합니다.

다음은 TypeScript를 활용한 Express 프로젝트를 생성하는 단계입니다:

프로젝트 생성

$ mkdir 04_express_app
$ cd 04_express_app

npm 초기화

프로젝트 디렉토리에서 package.json 파일을 생성합니다.

$ npm init -y

TypeScript 및 관련 패키지 설치:

Express와 Express를 TypeScript와 함께 사용하기 위해 필요한 타입 정의 파일을 설치합니다.

$ npm install express
$ npm install typescript ts-node @types/node @types/express --save-dev

TypeScript 설정 파일 생성:

다음 명령어를 통해 tsconfig.json 파일을 생성하고 다음과 같이 설정합니다.

$ tsc --init
{
  "compilerOptions": {
    "target": "ES6",
    "module": "commonjs",
    "strict": true,
    "esModuleInterop": true,
    "skipLibCheck": true,
    "forceConsistentCasingInFileNames": true,
    "outDir": "./dist"
  },
  "include": ["src/**/*"]
}

Express 초기화

TypeScript 설정이 완료되면, 애플리케이션을 초기화할 수 있습니다.

다음은 간단한 Express 서버를 TypeScript로 설정하는 방법입니다:

디렉토리 및 파일생성

프로젝트 루트 디렉토리에 src 디렉토리를 생성하고, 그 안에 index.ts 파일을 생성합니다.

서버 코드 작성

src/index.ts 파일에 다음과 같은 코드를 작성합니다.

import express, { Request, Response } from 'express';

const app = express();
const port = 3000;

app.get('/', (req: Request, res: Response) => {
  res.send('Hello World!');
});

app.listen(port, () => {
  console.log(`Server is running at http://localhost:${port}`);
});

서버 실행 스크립트 설정

package.json 파일에 다음과 같이 스크립트를 추가합니다.

"scripts": {
  "start": "ts-node src/index.ts"
}

서버 실행

터미널에서 다음 명령어를 입력하여 서버를 실행합니다

$ npm start

다음과 같이 cmd 창에서 웹 서버 url을 알려주고 이를 통해 접속하여 확인할 수 있습니다.

> 04_express_app@1.0.0 start
> ts-node src/index.ts

Server is running at http://localhost:3000

결과

참고 링크

Leave a Comment