목차

Express.js

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

📖 정의

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

🌟 주요 특징

미니멀한 구조

미들웨어 기반

라우팅 시스템

🔧 핵심 개념

미들웨어 (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}에서 실행 중입니다.`);
});

📦 주요 패키지

핵심 미들웨어

인증 & 보안

데이터베이스

🔍 디버깅

개발 환경 설정:

// 개발 모드에서 상세 로그
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, 웹 프레임워크