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 런타임
- JavaScript - 프로그래밍 언어
- PM2 - 프로세스 관리
- Nginx - 리버스 프록시
- GitHub - 코드 저장소
📚 관련 문서
🌐 외부 링크
wiki/glossary/web_technologies/express.txt · 마지막으로 수정됨: 저자 127.0.0.1