[javascript] Express.js의 주요 기능

Express.js는 Node.js를 기반으로 한 웹 애플리케이션 개발을 위한 간단하고 유연한 웹 애플리케이션 프레임워크입니다. 다음은 Express.js의 주요 기능에 대한 설명입니다.

1. 미들웨어 (Middleware) 지원

Express.js는 미들웨어를 통해 HTTP 요청과 응답을 처리할 수 있습니다. 미들웨어는 요청을 처리하기 전, 후 또는 중간에 발생하는 작업을 처리하는 함수입니다. 이를 통해 쉽게 로깅, 요청 및 응답 변형, 세션 관리 등의 작업을 수행할 수 있습니다.

const express = require('express');
const app = express();

// 미들웨어 등록
app.use(logger);

// 라우팅
app.get('/', (req, res) => {
  res.send('Hello Express!');
});

// 미들웨어 함수
function logger(req, res, next) {
  console.log(`${req.method} ${req.url}`);
  next();
}

app.listen(3000, () => {
  console.log('Express server is running on port 3000');
});

2. 간단한 라우팅 설정

Express.js는 간단하고 직관적인 방식으로 라우팅을 설정할 수 있습니다. HTTP 요청 메서드별로 각각의 경로에 대한 핸들러 함수를 등록하여 요청을 처리할 수 있습니다.

app.get('/users', function (req, res) {
  res.send('Get all users');
});

app.post('/users', function (req, res) {
  res.send('Create a new user');
});

app.put('/users/:id', function (req, res) {
  res.send(`Update user with id ${req.params.id}`);
});

app.delete('/users/:id', function (req, res) {
  res.send(`Delete user with id ${req.params.id}`);
});

3. 정적 파일 서비스

Express.js는 정적 파일 (이미지, CSS, JavaScript 파일 등) 서비스를 제공합니다. 정적 파일을 저장할 디렉터리를 지정하면 해당 디렉터리에 있는 파일을 웹 애플리케이션에서 접근할 수 있도록 해줍니다.

app.use(express.static('public'));

위의 예제 코드에서는 public 디렉터리에 있는 파일들을 정적 파일로 서비스하고 있습니다.

4. 템플릿 엔진 지원

Express.js는 템플릿 엔진을 사용하여 동적으로 HTML을 생성할 수 있습니다. 대표적인 템플릿 엔진으로는 Pug, EJS 등이 있습니다. 템플릿 엔진을 사용하면 동적인 데이터를 템플릿에 쉽게 추가하여 HTML을 생성할 수 있습니다.

// 템플릿 엔진 설정
app.set('view engine', 'pug');

// 라우팅 및 템플릿 렌더링
app.get('/users', function (req, res) {
  const users = [
    { name: 'Alice', age: 20 },
    { name: 'Bob', age: 25 },
    { name: 'Charlie', age: 30 }
  ];
  res.render('users', { users: users });
});

위의 예제 코드에서는 Pug 템플릿을 사용하여 /users 경로로 요청이 오면 users.pug 템플릿을 렌더링하고 있습니다.

Express.js는 이 외에도 다양한 기능을 제공하며, 유연하고 확장성 있는 웹 애플리케이션을 빠르게 개발할 수 있도록 도와줍니다.

참고: Express.js 공식 문서