: Express는 Node.js를 위한 간결하고 유연한 웹 애플리케이션 프레임워크입니다.
Express는 Node.js의 HTTP 모듈을 기반으로하여 웹 애플리케이션 및 API를 빠르고 간편하게 개발할 수 있는 도구를 제공합니다.
Express 특징
1. 미니멀한 디자인
: Express는 가볍고 최소한의 추상화로 구성되어 있어 개발자가 필요한 기능을 유연하게 추가할 수 있습니다.
2. 라우팅
: Express는 HTTP 메소드(GET, POST, PUT, DELETE 등)에 따라 요청을 처리할 수 있는 간단하고 직관적인 라우팅 기능을 제공합니다. 경로 매개변수와 쿼리 문자열을 처리하여 동적인 라우팅을 구현할 수 있습니다.
3. 미들웨어
: Express는 미들웨어를 사용하여 요청과 응답 사이에서 중간 처리를 수행할 수 있습니다. 이를 통해 로깅, 인증, 세션 관리, 오류 처리 등과 같은 공통 작업을 쉽게 처리할 수 있습니다.
4. 템플릿 엔진 지원
: Express는 다양한 템플릿 엔진을 지원하여 동적인 HTML 생성을 쉽게 할 수 있습니다. 예를 들어, Pug, EJS, Handlebars 등과 같은 템플릿 엔진을 사용할 수 있습니다.
5. 정적 파일 제공
: Express는 정적 파일(이미지, CSS, JavaScript 등)을 제공하기 위한 기능을 내장하고 있어, 간단하게 정적 파일을 서빙할 수 있습니다.
6. 확장성
: Express는 유연하고 확장 가능한 구조를 가지고 있어, 필요에 따라 라이브러리나 모듈을 추가하여 기능을 확장할 수 있습니다.
Express는 많은 개발자들에게 사랑받는 인기 있는 웹 애플리케이션 프레임워크로, 간단한 API 서버부터 복잡한 웹 애플리케이션까지 다양한 유형의 프로젝트에 사용됩니다.
Express.js 애플리케이션을 리팩토링하는 것은 기존 코드의 디자인, 가독성, 유지보수성을 향상시키는 과정입니다.
Express.js 애플리케이션을 리팩토링하기 위한 몇 가지 제안 사항은 다음과 같습니다:
1. 코드 모듈화:
- 애플리케이션을 책임에 따라 작은 모듈 또는 컴포넌트로 분해합니다.
- Express Router를 사용하여 경로를 정의하고, 서로 다른 파일로 분리합니다.
- 관련된 미들웨어 함수를 별도의 모듈로 그룹화합니다.
2. 미들웨어 함수 효과적으로 사용:
- 재사용 가능한 미들웨어 함수를 식별하고, 별도의 모듈로 추출합니다.
- 미들웨어 함수를 사용하여 에러 처리, 인증, 요청 유효성 검사와 같은 공통 작업을 처리합니다.
- 요청 본문 구문 분석, 압축, 로깅과 같은 공통 기능에 대해 타사 미들웨어 라이브러리를 사용합니다.
3. 에러 처리 구현:
- 전용 에러 핸들러 미들웨어로 에러 처리 로직을 집중합니다.
- 적절한 방식으로 다른 유형의 에러를 처리하고, 의미 있는 에러 메시지를 제공합니다.
- 에러 처리 미들웨어를 사용하여 애플리케이션 전체에서 에러를 잡고 처리합니다.
4. 라우트 처리 최적화:
- 라우트 핸들러를 검토하고, 재사용 가능한 함수로 리팩토링할 수 있는 중복 코드를 식별합니다.
- 동적 데이터 처리를 위해 경로 매개변수와 쿼리 매개변수를 효과적으로 사용합니다.
- 라우트 핸들러를 컨트롤러로 사용하고, 라우트 처리와 비즈니스 로직을 분리합니다.
5. 적절한 로깅 및 디버깅 구현:
- 로깅 라이브러리인 morgan이나 Winston과 같은 로깅 라이브러리를 사용하여 중요한 정보와 에러를 기록합니다.
- 디버그 문구를 적절하게 작성하거나 디버거를 사용하여 개발 중 문제를 식별하고 수정합니다.
6. async/await 사용 고려:
- 콜백이나 프로미스를 사용하는 코드를 async/await 문법을 사용하도
록 리팩토링하는 것이 좋습니다. 이는 가독성과 에러 처리를 개선하는 데 도움이 됩니다.
- async/await를 사용할 때 에러를 처리하기 위해 try/catch 블록을 사용합니다.
7. 유닛 테스트 작성:
- Mocha나 Jest와 같은 테스팅 프레임워크를 사용하여 애플리케이션의 중요한 부분에 대한 유닛 테스트를 작성합니다.
- Supertest와 같은 도구를 사용하여 API 엔드포인트를 테스트합니다.
- 리팩토링은 종합적인 테스트 스위트가 있는 경우에만 안전하고 효과적으로 수행되므로, 적절한 테스트를 반드시 수행해야 합니다.
리팩토링은 기능을 변경하지 않고 코드를 개선하는 과정이므로, 이 과정에서는 변화가 없는지 확인하기 위해 적절한 테스트를 수행하고, 변경하기 전에 코드를 버전 관리하는 것이 좋습니다.
아래는 Express를 사용한 간단한 예제 코드입니다.
이 예제 코드는 "/" 경로에 대한 GET 요청에 "Hello, World!"를 응답하는 간단한 웹 서버를 생성합니다.
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello, World!');
});
app.listen(port, () => {
console.log(`Server is listening on port ${port}`);
});
```
위의 코드를 실행하면 Express 애플리케이션이 3000번 포트에서 실행되며, 브라우저에서 "http://localhost:3000"에 접속하면 "Hello, World!"라는 메시지를 볼 수 있습니다.
위의 코드는 Express를 사용하여 기본적인 웹 서버를 구성하는 방법을 보여줍니다. 라우트 핸들러(`app.get('/')`)에서는 특정 경로에 대한 요청을 처리하고, `res.send()`를 사용하여 응답을 보냅니다. `app.listen()`은 지정된 포트에서 애플리케이션을 실행합니다.
이 예제 코드를 확장하여 다양한 경로와 HTTP 메소드에 대한 요청을 처리하고, 미들웨어를 추가하여 더 복잡한 Express 애플리케이션을 작성할 수 있습니다.
| [FE 45] _23.06.08 _ Day 40 (Section 2 회고 & 모의 기술 면접) (0) | 2023.06.08 |
|---|---|
| [FE 45] _23.06.05 _ Day 38 ([Web Server] 기초) (0) | 2023.06.05 |
| [FE 45] _23.06.01 _ Day 36 ([Web Server] 기초) (0) | 2023.06.01 |
| [FE 45] _23.05.31 _ Day 35 ( [React] 클라이언트 Ajax 요청) (0) | 2023.05.31 |
| [FE 45] _23.05.30 _ Day 34 ( [React] 클라이언트 Ajax 요청) (0) | 2023.05.31 |