ExpressJS 소개 [+6 Learning Resources]

ExpressJS 소개: 특징, 장점, 그리고 학습 자료

ExpressJS는 Node.js 기반의 경량 웹 프레임워크로, 모바일 및 웹 애플리케이션 개발에 필요한 다양한 기능들을 제공합니다.

이 오픈소스 프레임워크는 TJ Holowaychuk에 의해 개발되었으며, 현재는 Node.js 재단에서 관리하고 있습니다.

ExpressJS를 선택해야 하는 이유

ExpressJS는 백엔드, 웹 앱 및 웹 사이트 개발을 간소화하는 API를 제공합니다. 이는 Python의 Django나 Ruby on Rails와 유사한 역할을 합니다.

Django나 Rails와는 달리, ExpressJS는 ‘최고의 방법’이라는 고정된 접근 방식을 따르지 않고, 유연성과 사용자 맞춤 설정이 가능한 환경을 제공합니다. 개발자는 자신만의 방식으로 작업을 수행할 수 있습니다.

ExpressJS를 사용해야 하는 핵심 이유는 다음과 같습니다.

  • API와 웹 애플리케이션을 쉽고 빠르게 만들 수 있습니다.
  • 강력한 API를 통해 라우팅을 간편하게 처리할 수 있습니다.
  • 비동기적이며 단일 스레드 방식으로 작동합니다.

ExpressJS의 주요 특징

#1. MEAN 스택의 핵심 요소

JavaScript는 프론트엔드와 백엔드 모두에서 사용 가능한 다양한 프레임워크를 보유하고 있어, 여전히 가장 인기 있는 프로그래밍 언어 중 하나입니다.

많은 개발자들이 MongoDB, Express, Node.js, AngularJS를 결합한 MEAN 스택을 선호하며, 또 다른 개발자들은 Reactjs를 사용하여 MERN 스택(MongoDB, Express, Node.js, Reactjs)을 사용하기도 합니다. 두 가지 선택지 모두에서 Expressjs는 핵심적인 역할을 담당합니다.

#2. 유연성과 빠른 속도

ExpressJS는 최소한의 기능만 제공하도록 설계되어, 복잡한 프레임워크의 다른 부분에 익숙해질 필요가 없습니다. 뛰어난 라우팅 시스템, 바로 사용 가능한 콘텐츠 협상 기능, 미들웨어 지원 덕분에 개발 속도를 향상시킬 수 있습니다.

#3. 확장성

ExpressJS로 구축된 애플리케이션은 쉽게 확장할 수 있다는 장점 때문에 많은 기업에서 사용하고 있습니다. 대규모 애플리케이션 개발 시에도 추가적인 구성이 거의 필요하지 않습니다. 다양한 모듈, 패키지, 추가 리소스 덕분에 대규모 애플리케이션 개발이 용이합니다.

#4. 미들웨어의 존재

ExpressJS는 개발 과정을 가속화하고 향상시키는 다양한 미들웨어 앱을 제공합니다. 미들웨어를 사용하면 클라이언트 요청 전후에 특정 스크립트를 간편하게 실행할 수 있습니다. 이를 통해 개발자는 로그인/로그아웃 같은 클라이언트 작업을 쉽게 처리할 수 있습니다.

#5. 강력한 라우팅 시스템

ExpressJS의 라우팅 시스템은 개발자가 거의 모든 HTTP 요청을 처리할 수 있는 강력한 API를 만들 수 있도록 합니다. 라우터 인스턴스를 사용하여 코드를 관리하기 쉬운 파일로 분할하여 복잡한 라우팅 시스템을 피할 수 있습니다. 또한, 서로 다른 경로를 단일 디렉토리/폴더로 그룹화하여 애플리케이션 관리를 효율적으로 할 수 있습니다.

ExpressJS의 구조

이미지 출처: turing.com

익스프레스 애플리케이션의 주요 구성 요소는 다음과 같습니다.

  • 종속성: ExpressJS 자체를 비롯한 다양한 종속성이 필요하며, npm 명령을 사용하여 추가적인 종속성을 설치할 수 있습니다.
  • 미들웨어: 요청/응답 주기를 제어하는 기능을 담당합니다.
  • 인스턴스화: 객체 생성을 위한 명령문입니다.
  • 구성: 인스턴스화 후 또는 별도의 파일에서 정의된 사용자 지정 설정을 포함합니다.
  • 경로: 클라이언트가 다양한 리소스에 접근하거나 서버에서 정의한 특정 작업을 수행하기 위한 엔드포인트입니다.
  • 서버 부트스트래핑: `app.listen()` 함수를 실행하여 개발 서버를 시작합니다.

ExpressJS 시작하기

ExpressJS는 Node.js 위에서 실행되므로, 먼저 Node.js를 컴퓨터에 설치해야 합니다.

개발 환경에서 필요한 종속성 관리를 위해 npm(Node Package Manager)도 필요합니다.

공식 웹사이트를 통해 운영 체제에 맞는 Node.js를 설치할 수 있습니다.

설치가 완료되면 다음 명령을 실행하여 Node와 npm이 제대로 설치되었는지 확인할 수 있습니다.

node --version
npm --version

ExpressJS 설치

다음 단계를 따르세요.

  • 간단한 ExpressJS 앱을 만들려면 수동으로 폴더를 만들거나 다음 명령어를 사용할 수 있습니다.
mkdir myapp
cd myapp
  • `package.json` 파일을 생성하려면 다음 명령을 사용하세요.
npm init
  • 제공되는 프롬프트에 따라 설정을 완료하세요. 단, 진입점(entry point)을 `index.js`에서 `app.js`로 변경하세요.
  • ExpressJS를 설치하려면 다음 명령을 사용하세요.
npm install express
  • “Hello World” 출력해보기

루트 디렉토리에서 `app.js` 파일을 생성합니다.

다음 코드를 `app.js` 파일에 추가합니다.

const express = require('express')

const app = express()

const port = 3000

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

app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

다음 명령을 실행하여 로컬 서버를 시작합니다.

node app.js

브라우저에서 `http://localhost:3000/`으로 접속하면 “Hello World!” 메시지를 확인할 수 있습니다.

익스프레스 애플리케이션 생성기

위에서 수동으로 만든 애플리케이션은 매우 기본적인 형태입니다. Express 생성기를 사용하면 ExpressJS 앱을 더 빠르고 쉽게 생성할 수 있습니다.

  • 다음은 ExpressJS 앱을 생성하는 명령입니다.
npx express-generator
  • 만약 node.js 버전이 8.2.0 이전이라면, 애플리케이션 생성기를 먼저 설치하고 다음 명령을 사용해야 합니다.
npm install -g express-generator
express
express --view=pug myapp

위 명령어는 `myapp`이라는 이름의 앱을 생성합니다.

  • 필요한 모든 종속성을 설치하려면 다음 명령을 실행하세요.
cd myapp

npm install
  • 운영 체제에 따라 다음 명령으로 개발 서버를 실행하세요.

Windows PowerShell에서:

PS> $env:DEBUG='myapp:*'; npm start

Windows 명령 프롬프트에서:

> set DEBUG=myapp:* & npm start

macOS 또는 Linux에서:

DEBUG=myapp:* npm start

브라우저에서 `http://localhost:3000/`에 접속하면 다음과 같은 화면을 볼 수 있습니다.

#1. 핀테크 앱

은행 및 금융 기관의 디지털화가 진행되면서 핀테크 앱의 수요가 증가하고 있습니다. 이러한 앱은 금융 및 은행 서비스를 지원하는 데 사용됩니다. ExpressJS는 확장 가능한 핀테크 앱을 만드는 데 효과적인 프레임워크입니다.

#2. 싱글 페이지 애플리케이션

싱글 페이지 애플리케이션(SPA)은 하나의 페이지에서 전체 애플리케이션이 작동하는 현대적인 개발 방식입니다. Airbnb, Netflix, Pinterest, Paypal, Gmail, Google 지도 등 대규모 모바일 및 웹 앱들이 SPA의 대표적인 예입니다. ExpressJS는 간편한 라우팅 기능을 제공하여 SPA 개발에 적합한 프레임워크입니다.

#3. 스트리밍 애플리케이션

Spotify나 Netflix와 같은 스트리밍 앱은 사용자에게 단순해 보일 수 있지만, 실제로는 다양한 계층의 데이터를 처리해야 하는 복잡한 구조를 가지고 있습니다. ExpressJS는 비동기 데이터 스트림을 효율적으로 처리할 수 있어 이러한 앱 개발에 적합한 선택입니다.

#4. 실시간 협업 도구

현대 작업 환경에서는 팀원들이 공동의 목표를 위해 다양한 작업을 협업합니다. ExpressJS는 협업 도구 개발을 지원하는 다양한 기능을 제공합니다. 이 프레임워크는 WebSocket과 쉽게 통합되어 대시보드 및 실시간 채팅 애플리케이션 개발에도 유용합니다.

ExpressJS의 장점

  • 무료 및 오픈 소스: ExpressJS는 무료로 사용할 수 있으며, 필요에 따라 코드를 수정할 수 있습니다.
  • 쉬운 사용법: 복잡한 절차 없이 코드를 작성할 수 있으며, 프레임워크 내에 다양한 도구와 기능이 내장되어 있어 개발 과정을 간소화합니다.
  • 빠른 개발: 다양한 템플릿을 제공하여 처음부터 코드를 작성할 필요 없이 빠르게 개발할 수 있습니다.
  • 뛰어난 성능: ExpressJS로 개발된 앱은 뛰어난 성능을 보여주므로 소규모 앱부터 대규모 엔터프라이즈 앱까지 모두 적용 가능합니다.

ExpressJS의 단점

  • 도움이 되지 않는 일부 오류 메시지: 다른 백엔드 프레임워크와 달리 ExpressJS의 404 응답은 항상 오류를 의미하지 않을 수 있습니다.
  • 코드 구성에 대한 어려움: ‘최고의 방법’이 존재하지 않아 코드 구성에 어려움을 겪을 수 있습니다.

ExpressJS 학습 자료

#1. Node.js, Express, MongoDB 등

이 과정은 백엔드 스택 전반을 한 번에 배우고 싶은 사용자에게 적합합니다. 이 과정을 마치면 ExpressJS와 관련 기술을 사용하여 확장 가능하고 빠른 RESTful API를 개발할 수 있습니다.

#2. Just Express

이 과정은 Express 서버를 REST API로 운영하는 방법을 배우고자 하는 사용자에게 적합합니다. HTTP 기본 사항과 요청/응답 주기를 쉽게 이해할 수 있도록 도와줍니다.

#3. React, NodeJS, Express, MongoDB

이 MERN 풀스택 과정은 JavaScript 풀스택 애플리케이션을 만드는 방법을 배우고자 하는 사용자에게 적합합니다. ReactJS를 NodeJS, Express, MongoDB와 통합하는 방법, 인증 및 권한 부여를 구현하는 방법 등을 배울 수 있습니다.

#4. Express in Action: Node.js 애플리케이션 작성, 구축 및 테스트

이 책은 Node와 ExpressJS를 사용하여 웹 애플리케이션을 만드는 단계를 자세히 설명합니다. ExpressJS 앱 설정 방법, MongoDB를 사용한 데이터 저장 방법, Express 앱을 테스트하는 방법 등을 배울 수 있습니다.

#5. Express.js: Node.js용 웹 프레임워크 가이드북

이 책은 ExpressJS 웹 프레임워크에 대한 심층적인 정보를 제공합니다. ExpressJS가 사용자에게 제공하는 다양한 모델을 기반으로 논의가 진행됩니다.

#6. ExpressJS 공식 문서

ExpressJS는 잘 문서화된 Node.js 프레임워크이며, 공식 문서를 통해 시작하는 데 필요한 모든 것을 배울 수 있습니다. 초보 개발자든 고급 개발자든 이 자료를 유용하게 사용할 수 있습니다.

결론

ExpressJS는 현대 사회에서 가장 인기 있는 Node.js 웹 프레임워크 중 하나입니다. 강력한 기능과 쉬운 학습 곡선 덕분에 오랫동안 그 자리를 지키고 있습니다. ExpressJS는 Node.js의 기반 역할을 하므로, ExpressJS를 이해하면 다른 관련 프레임워크를 쉽게 익힐 수 있습니다.