Express.js는 Node.js를 위한 빠르고 유연한 웹 애플리케이션 프레임워크입니다.
Express.js는 Node.js의 핵심 모듈인 HTTP 모듈을 기반으로 한 웹 애플리케이션 프레임워크로, 미니멀하고 유연한 구조를 제공합니다. 2010년에 TJ Holowaychuk에 의해 개발되어 현재 가장 인기 있는 Node.js 웹 프레임워크 중 하나입니다.
요청과 응답 사이에서 실행되는 함수들
// 미들웨어 예시 app.use((req, res, next) => { console.log(`${req.method} ${req.url}`); next(); });
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'); }