프로그래밍 언어/NEXT.JS

[NEXT.JS] Express.js

doomole 2024. 7. 31. 10:56
728x90

개요

Express.js는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크로, 특히 웹 서버와 API를 개발하는 데 널리 사용됩니다. Express는 미들웨어와 라우팅 기능을 제공하며, Node.js의 기능을 확장하고 개발자가 웹 애플리케이션을 더 쉽게 구축할 수 있도록 돕습니다.

 

 

특징

간결함과 유연성

- Express는 매우 가볍고 간결한 프레임워크로, 필요한 기능만 포함하고 있어 사용자가 원하는 대로 확장하고 맞춤화할 수 있습니다.

- 프레임워크가 복잡하지 않아 학습 곡선이 비교적 낮습니다.

 

미들웨어

Express의 핵심 개념 중 하나는 미들웨어입니다. 미들웨어는 요청과 응답 객체를 통해 각기 다른 작업을 수행하는 함수의 연속입니다.

다양한 서드파티 미들웨어를 사용할 수 있으며, 필요에 따라 직접 작성할 수도 있습니다.

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

// 미들웨어 예제
app.use((req, res, next) => {
  console.log('Time:', Date.now());
  next();
});

app.get('/', (req, res) => {
  res.send('Hello World');
});

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

 

라우팅

Express는 강력하고 유연한 라우팅 시스템을 제공합니다. URL 경로와 HTTP 메서드에 따라 요청을 처리할 수 있습니다.

app.get('/user/:id', (req, res) => {
  res.send(`User ID: ${req.params.id}`);
});

app.post('/user', (req, res) => {
  res.send('Got a POST request');
});

app.put('/user/:id', (req, res) => {
  res.send(`Updated User ID: ${req.params.id}`);
});

app.delete('/user/:id', (req, res) => {
  res.send(`Deleted User ID: ${req.params.id}`);
});

 

 

템플릿 엔진

Express는 EJS, Pug, Handlebars 등 다양한 템플릿 엔진과 통합하여 동적인 HTML 페이지를 생성할 수 있습니다.

app.set('view engine', 'pug');

app.get('/hello', (req, res) => {
  res.render('index', { title: 'Hey', message: 'Hello there!' });
});

 

 

정적 파일 제공

정적 파일(이미지, CSS 파일, JavaScript 파일 등)을 쉽게 제공할 수 있습니다.

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

 

환경 설정

Express 애플리케이션의 설정을 쉽게 구성할 수 있으며, 개발, 테스트, 프로덕션 환경에 맞게 설정을 분리할 수 있습니다.

const port = process.env.PORT || 3000;

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

 

 

 

 

사용 예시

프로젝트 초기화 및 Express 설치

mkdir myapp
cd myapp
npm init -y
npm install express

 

서버 코드 작성

server.js 파일을 생성하고 아래의 코드를 작성합니다.

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

app.use(express.json()); // JSON 요청 본문을 파싱하기 위한 미들웨어

// 간단한 라우트 정의
app.get('/', (req, res) => {
  res.send('Hello World!');
});

// RESTful API 엔드포인트 정의
let users = [
  { id: 1, name: 'John Doe' },
  { id: 2, name: 'Jane Doe' }
];

app.get('/users', (req, res) => {
  res.json(users);
});

app.post('/users', (req, res) => {
  const newUser = { id: users.length + 1, name: req.body.name };
  users.push(newUser);
  res.status(201).json(newUser);
});

app.put('/users/:id', (req, res) => {
  const user = users.find(u => u.id === parseInt(req.params.id));
  if (!user) return res.status(404).send('User not found');

  user.name = req.body.name;
  res.json(user);
});

app.delete('/users/:id', (req, res) => {
  const userIndex = users.findIndex(u => u.id === parseInt(req.params.id));
  if (userIndex === -1) return res.status(404).send('User not found');

  const deletedUser = users.splice(userIndex, 1);
  res.json(deletedUser);
});

app.listen(port, () => {
  console.log(`Server is running on port ${port}`);
});

 

서버 실행

node server.js

 

 

참고 링크

 

Express 공식 문서

 

Express - Node.js web application framework

Fast, unopinionated, minimalist web framework for Node.js $ npm install express --save

expressjs.com

Express GitHub 레포지토리

 

GitHub - expressjs/express: Fast, unopinionated, minimalist web framework for node.

Fast, unopinionated, minimalist web framework for node. - expressjs/express

github.com

Node.js 공식 사이트

 

Node.js — Run JavaScript Everywhere

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

문의사항이나 피드백은 댓글로 남겨주세요.

 

 

'프로그래밍 언어 > NEXT.JS' 카테고리의 다른 글

[NEXT.JS] SWR  (0) 2024.07.31
[NEXT.JS] Axios  (0) 2024.07.31
[NEXT.JS] 환경변수 설정  (0) 2024.07.11
[NEXT.JS] TypeScript(타입스크립트)  (0) 2024.07.11
[NEXT.JS] 정적 사이트 생성(SSG)  (0) 2024.07.11