Express에서 정적 파일(이미지, CSS, JavaScript 파일 등)을 제공하려면, express.static
미들웨어를 사용해야 한다. 이를 통해 특정 디렉토리의 파일들을 공개적으로 접근 가능하게 할 수 있다.
예를 들어, 'public'이라는 디렉토리에 정적 파일들을 저장하고 이를 사용하려면 다음과 같이 코드를 작성한다.
app.use(express.static('public'));
이렇게 설정하면 public
디렉토리 아래의 파일들은 웹 브라우저를 통해 직접 접근할 수 있다. 예를 들어, public
디렉토리에 image.jpg
라는 이미지 파일이 있다면, 사용자는 http://localhost:3000/image.jpg
로 접근하여 이미지를 볼 수 있다.
템플릿 엔진(Template Engine)은 동적 데이터를 포함한 HTML 파일을 생성하는 데 사용된다. Express는 여러 템플릿 엔진을 지원한다. 대표적으로 Pug
, EJS
, Handlebars
등이 있다.
EJS
를 예로 들면, 템플릿 엔진을 사용하려면 먼저 npm을 통해 설치해야 한다:
npm install ejs --save
그 다음, Express 애플리케이션에서 EJS
를 설정한다.
app.set('view engine', 'ejs');
이제 .ejs
확장자를 가진 파일들을 views
디렉토리에 저장하면, 이 파일들을 템플릿으로 사용할 수 있다. 예를 들어 views
디렉토리 아래에 index.ejs
파일을 만들고, 다음과 같은 코드로 동적 데이터를 포함한 웹 페이지를 생성할 수 있다:
<!DOCTYPE html>
<html>
<head>
<title>테스트 페이지</title>
</head>
<body>
<h1><%= title %></h1>
<p><%= message %></p>
</body>
</html>
Express 애플리케이션에서는 다음과 같이 res.render
함수를 사용하여 템플릿을 렌더링한다:
app.get('/', (req, res) => {
res.render('index', {
title: '제목',
message: '메시지 내용'
});
});
Express는 미들웨어를 사용하여 오류 처리도 할 수 있다. 오류 처리 미들웨어는 일반 미들웨어와는 달리 4개의 매개변수를 가진다: err
, req
, res
, next
. 오류 처리 미들웨어는 다른 미들웨어에서 오류가 발생했을 때 호출된다.
예제:
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('서버에서 오류가 발생했습니다!');
});
Express는 웹 애플리케이션 개발을 위한 강력하고 유연한 프레임워크다. 라우팅, 미들웨어, 정적 파일 제공, 템플릿 엔진 등의 기능을 제공하여, 웹 애플리케이션과 API의 개발을 쉽고 빠르게 할 수 있다.
Node.js와 결합하여 사용하면, 단일 언어(JavaScript)를 사용하여 서버와 클라이언트 모두의 코드를 작성할 수 있다. 이는 개발 과정을 단순화하고, 코드 재사용성을 높인다.
끝으로, Express와 관련된 다양한 미들웨어와 라이브러리를 통해 웹 애플리케이션의 기능을 쉽게 확장할 수 있다. 이를 통해, 개발자는 빠른 시간 안에 안정적이고 확장 가능한 웹 애플리케이션을 구축할 수 있다.