상세 컨텐츠

본문 제목

[FE 45] _23.06.02 _ Day 37 ([Web Server] 기초)

프론트앤드 부트캠프/Day

by 코린’s 2023. 6. 2. 13:52

본문

728x90
반응형

Express란? 무엇인가요??

: 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 애플리케이션을 작성할 수 있습니다.

728x90
반응형

관련글 더보기