사용자 도구

사이트 도구


wiki:glossary:web_technologies:express

Express.js

Express.js는 Node.js를 위한 빠르고 유연한 웹 애플리케이션 프레임워크입니다.

📖 정의

Express.js는 Node.js의 핵심 모듈인 HTTP 모듈을 기반으로 한 웹 애플리케이션 프레임워크로, 미니멀하고 유연한 구조를 제공합니다. 2010년에 TJ Holowaychuk에 의해 개발되어 현재 가장 인기 있는 Node.js 웹 프레임워크 중 하나입니다.

🌟 주요 특징

미니멀한 구조

  • 핵심 기능만 포함
  • 플러그인 방식의 미들웨어
  • 유연한 라우팅 시스템

미들웨어 기반

  • 요청/응답 처리 파이프라인
  • 재사용 가능한 컴포넌트
  • 체이닝 방식의 처리

라우팅 시스템

  • RESTful API 지원
  • 동적 라우트 매개변수
  • 정규식 기반 라우팅

🔧 핵심 개념

미들웨어 (Middleware)

요청과 응답 사이에서 실행되는 함수들

// 미들웨어 예시
app.use((req, res, next) => {
    console.log(`${req.method} ${req.url}`);
    next();
});

라우터 (Router)

URL 경로와 HTTP 메서드를 연결하는 시스템

// 라우터 예시
app.get('/users', (req, res) => {
    res.json({ users: [] });
});
 
app.post('/users', (req, res) => {
    res.status(201).json({ message: 'User created' });
});

템플릿 엔진

서버 사이드 렌더링을 위한 뷰 엔진

// EJS 템플릿 엔진 설정
app.set('view engine', 'ejs');
app.set('views', './views');

🚀 기본 사용법

const express = require('express');
const app = express();
 
// 미들웨어 설정
app.use(express.json());
app.use(express.static('public'));
 
// 라우트 정의
app.get('/', (req, res) => {
    res.send('Hello Express!');
});
 
// 서버 시작
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
    console.log(`서버가 포트 ${PORT}에서 실행 중입니다.`);
});

📦 주요 패키지

핵심 미들웨어

  • express.json(): JSON 요청 본문 파싱
  • express.urlencoded(): URL 인코딩된 데이터 파싱
  • express.static(): 정적 파일 서빙
  • cors: Cross-Origin Resource Sharing
  • helmet: 보안 헤더 설정

인증 & 보안

  • passport: 인증 미들웨어
  • bcrypt: 비밀번호 해싱
  • jsonwebtoken: JWT 토큰 처리

데이터베이스

  • mongoose: MongoDB ODM
  • sequelize: SQL ORM
  • prisma: 현대적인 ORM

🔍 디버깅

개발 환경 설정:

// 개발 모드에서 상세 로그
if (process.env.NODE_ENV === 'development') {
    app.use((req, res, next) => {
        console.log(`[${new Date().toISOString()}] ${req.method} ${req.url}`);
        next();
    });
}

에러 핸들링:

// 404 에러 처리
app.use((req, res) => {
    res.status(404).send('페이지를 찾을 수 없습니다.');
});
 
// 전역 에러 핸들러
app.use((err, req, res, next) => {
    console.error(err.stack);
    res.status(500).send('서버 오류가 발생했습니다.');
});

🚀 성능 최적화

압축 미들웨어:

const compression = require('compression');
app.use(compression());

캐싱 설정:

// 정적 파일 캐싱
app.use(express.static('public', {
    maxAge: '1d',
    etag: true
}));

클러스터 모드:

const cluster = require('cluster');
const numCPUs = require('os').cpus().length;
 
if (cluster.isMaster) {
    for (let i = 0; i < numCPUs; i++) {
        cluster.fork();
    }
} else {
    require('./app.js');
}

🔗 관련 용어

📚 관련 문서

🌐 외부 링크


카테고리: 웹 기술 | 관련 기술: Node.js, JavaScript, 웹 프레임워크

wiki/glossary/web_technologies/express.txt · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki