====== 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'); } ===== 🔗 관련 용어 ===== * [[wiki:glossary:server_operations:nodejs|Node.js]] - JavaScript 런타임 * [[wiki:glossary:web_technologies:javascript|JavaScript]] - 프로그래밍 언어 * [[wiki:glossary:server_operations:pm2|PM2]] - 프로세스 관리 * [[wiki:glossary:web_technologies:nginx|Nginx]] - 리버스 프록시 * [[wiki:glossary:development_tools:git:github|GitHub]] - 코드 저장소 ===== 📚 관련 문서 ===== * [[wiki:it:dream_of_enc:metaverse:express|Express.js 웹 프레임워크]] * [[wiki:it:dream_of_enc:metaverse:nodejs|Node.js 백엔드 설정]] * [[wiki:it:dream_of_enc:metaverse:socketio|Socket.IO 실시간 통신]] ===== 🌐 외부 링크 ===== * [[https://expressjs.com/|Express.js 공식 웹사이트]] * [[https://expressjs.com/en/guide/routing.html|라우팅 가이드]] * [[https://expressjs.com/en/guide/using-middleware.html|미들웨어 가이드]] ---- **카테고리:** [[wiki:glossary:web_technologies:start|웹 기술]] | **관련 기술:** Node.js, JavaScript, 웹 프레임워크