Express는 Node.js를 기반으로한 웹 개발 프레임워크다.
Node.js의 기본 HTTP 모듈보다 간편하게 웹 서버를 만들 수 있도록 도와준다고 한다.
익스프레스 없이 작성한 코드를 리팩토링해 본다.
// 이전 코드
const http = require('http');
const PORT = 4999;
const ip = 'localhost';
const server = http.createServer((request, response) => {
// ...
}).listen(PORT, ip, () => {
console.log(`http server listen on ${ip}:${PORT}`);
});
// Express 변환 코드
const express = require('express');
const app = express();
const PORT = 4999;
app.listen(PORT, () => {
console.log(`Express server listen on port ${PORT}`);
});
express 모듈 요청, Express App 객체를 생성http.createServer 사용해 서버 생성 → app.listen 메소드 사용, Express App 실행 서버 시작// 이전 코드
const server = http.createServer((request, response) => {
if (request.method === 'OPTIONS') {
response.writeHead(200, defaultCorsHeader);
response.end();
return;
}
// ...
});
const defaultCorsHeader = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type, Accept',
'Access-Control-Max-Age': 10
};
// Express 변환 코드
const cors = require("cors");
app.use(cors()); // cors 적용
OPTIONS 요청 처리를 위해 조건문, response.writeHead 메소드
→ cors 하나만 불러오면 된다… 개인적으로 이거 좀 충격
// 이전 코드 생략
// Express 변환 코드
app.post('/lower', (req, res) => {
let body = [];
req.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString().toLowerCase();
res.set(defaultCorsHeader);
res.end(body);
});
});
app.post('/upper', (req, res) => {
let body = [];
req.on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString().toUpperCase();
res.set(defaultCorsHeader);
res.end(body);
});
});
app.use((req, res) => {
res.sendStatus(404);
});
app.listen(PORT, () => {
console.log(`Express server listen on port ${PORT}`);
});
당연하게도 두 코드는 같은 동작을 수행한다. (그것이 리팩토링이니까)
사실 이전 코드와 리팩토링한 코드의 분량 차이가 엄청난 정도는 아니다.
이것은 개미 융털 사이즈의 맛보기 스푼급 코드니 당연한 일.
프로젝트 규모가 커질수록 그 장점이 극대화된다.
직관적이고 간결한 API를 제공한다.
따라서 개발자는 라우팅, 미들웨어, 요청 및 응답 처리 등을 더 쉽게 작성할 수 있게 됨.
더 적은 코드로 같은 작업을 수행할 수 있으며, 이해하기 쉽고 유지보수가 용이. (역시 AS가 제일 중요)
Express는 강력한 미들웨어 지원을 통해 유연성과 확장성을 제공한다.
여기서 미들웨어는 요청과 응답 처리를 중간에 가로채고 수정할 수 있는 기능이다.
Express에서는 다양한 미들웨어로 애플리케이션에 필요한 기능을 쉽게 추가하거나 커스텀할 수 있다고 함.
두근두근~
많은 개발자들이 사용해서 커뮤니티와 생태계가 활발하다?
다양한 라이브러리, 플러그인, 패키지 등이 존재한다는 의미기도 하다.
또 아기 개발자들에게 가장 중요한… 문제 발생 시 참고할 고수님들과 리소스들이 풍부하다는 것. (압도적 감사)
오랜 역사와 사용자들의 신뢰를 바탕으로 웹 개발을 위한 ㅍ레임워크 중에서는…
사실상 표준 프레임워크로 여겨지는 것 같다.
많은 고수님들이 Express 기반 앱을 작성하고 있으시다.
이것은 뭐가? 기존 코드를 이해하고 유지보수하는 것이 상대적으로 쉽다~…