Skip to main content

Command Palette

Search for a command to run...

[NodeJS]Express.js 개요

Updated
2 min read

Express.js란?

Node.js의 핵심 모듈인 http와 Connect 컴포넌트를 기반으로 하는 웹 프레임워크이다. 그런 컴포넌트를 미들웨어(middleware)라고 한다.

Express.js를 이용하게 된 계기로써, Node.js의 단점을 들자면, Node.js는

  1. HTTP 요청 본문 파싱

  2. 쿠키 파싱

  3. 세션 관리

  4. 복잡한 if 조건을 통한 라우팅 구성

등등의 문제 해결에 있어, 반복적인 코드 작성이 있다고 한다.

Express.js는 해당 문제를 비롯한 다양한 문제에서 해결점을 찾았을 뿐만 아니라 MVC(Models, Views, Controllers)형태의 구조를 제공한다.

자바 스크립트 개발자가 웹 서버 개발까지 가능하게 해주며 풀스택 개발 능력을 갖추게 하여 유용하다.

Express.js의 작동 방식

Express.js에는 메인 파일이라고 하는 진입점이 있다. 해당 파일은

  1. 서드파티 의존 모듈을 인클루드한다.

  2. 템플릿 엔진, 템플릿 엔진의 파일 확장자와 같이 앱 설정을 구성한다.

  3. 미들웨어를 정의한다.

  4. 라우팅을 정의한다.

  5. Mongo, MySQL같은 데이터베이스 연결한다.

  6. 앱을 구동한다.

의 역할을 한다.

실행 시에, 맨 위부터 라우팅과 미들웨어에 따라 맨 아래까지 처리된다. 그 과정은

  1. 쿠키를 파싱한다.

  2. URL로부터 매개변수를 파싱한다

  3. 사용자 인증이 완료되면, db에서 정보를 가져와 일치하는 것이 있을 시에 다음 단계로 이동한다.

  4. 데이터를 표시하고 응답을 마친다.

간단한 Express.js 구동 방식

  1. npm init을 통해 package.json 생성

  2. npm install express를 통해 express 설치

  3. app.js 생성 후, 다음과 같이 작성

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

app.get('/', (req, res, next) => {
  res.send('<p>Hello World</p>')
})
  1. npm start 를 통해 서버를 실행한다.

Express.js 간단 함수

app.get

url과 qurey string에 요청 정보를 붙여 요청을 받으면 get 함수에서 콜백함수가 작동하여 request의 queryString으로 전달받은 데이터를 받아오는 등 데이터를 가져오는 작업을 한다.

app.post

post 방식의 요청은 http 패킷의 body영역에 queryString 형태로 데이터를 담아서 요청을 보낸다. app.post는 이렇게 post 방식으로 전송한 데이터를 콜백 함수를 통해 받아온다.

More from this blog

[ZSH] tree 사용하기

들어가며 큰 규모의 프로젝트를 출시한 뒤, 후일을 위해서 더 늦기 전에 파일 정리 및 문서화를 진행해야했다. 문서화 작업을 하는 중에 기왕 정리하는 거 파일 구조를 이쁘게 트리 구조로 나열하여 코멘트를 달면 나중에 보더라도 이해하기 더 쉬울 것 같았다. 어떻게 해야 간지나는 트리 구조를 만들 수 있을까 방법을 찾다보니 역시나 파일 구조를 트리로 이쁘게 출력해주는 커맨드 툴이 존재했다. tree 커맨드에 대해서 알아보고 알짜배기 내용만 정리했다....

Feb 21, 20242 min read

[Next.js] parallel routes & intercepting routes

트위터 로그인 모달창을 만들어보며 넥스트의 parallel routes 와 intercepting routes 을 학습한 내용을 정리해보았습니다. 트위터 로그인 창을 확인해봅시다. 루트 디렉토리 화면을 배경으로 i/flow/login 페이지가 동시에 표시되고 있습니다. 저는 app router 를 학습하기 전까지는 createPortal 을 사용하여 포탈 영역에 로그인 컴포넌트를 띄우는 방식을 사용했었습니다. const NoLogin =()=...

Feb 1, 20244 min read

C/C++ 이진 트리(binary tree) 개요 및 구현(1)

개요 트리는 노드들이 나무 가지처럼 연결된 비선형 계층적 자료구조이다. 하위 트리가 존재하고, 그 노드에 또 하위 트리가 존재하는 자료구조 이다. 트리의 맨 위에 있는 루트 노드가 존재한다. 우리가 알아볼 트리는 이진 트리이다. 이진 트리는 자식 노드(부모로부터 아래로 이어진 노드)가 2개 이하인 구조를 말한다. 트리의 사용 사례로는 다음과 같다 계층 적 데이터 저장(파일,폴더) 효율적인 검색 속도 힙 데이터 베이스의 인덱싱 트리에 ...

Jan 31, 20244 min read

[React] Server component (RSC)

React.js 18 에 도입된 리액트 서버 컴포넌트는 서버에서 동작하는 리액트 컴포넌트를 의미합니다. Next가 권장하는 라우팅 방식인 app router의 기반이 되는 컴포넌트이기 때문에 app router 를 이해하기 위해서는 server component 에 대한 이해가 필요합니다. server component 리액트는 클라이언트단만을 컴포넌트화하는 대신, server component라는 개념을 통해 서버 영역을 컴포넌트화합니다. ...

Jan 29, 20243 min read

Flutter, JavaScript

42 posts

[NodeJS]Express.js 개요