25일차 - Node.js 입문(1) Express.js

이상민·2024년 9월 2일

TIL

목록 보기
25/48

Express.js의 이해

1) 웹 프레임워크(Web Framework)

🎯 웹 프레임워크(Web Framework)란 웹 서비스를 빠르게 구현할 수 있게 도와주는 도구를 의미한다.

  • 우리가 어떤 프로그램을 개발할 때, 모든 것을 처음부터 만드는 것은 엄청나게 많은 시간과 노력을 요구 하게된다. 이러한 문제를 해결 하기 위해 개발과정에서 등장한 것이 웹 프레임워크이다.
  • 웹 프레임워크란, 프로그래밍의 특정 부분을 추상화하여, 개발자가 더 높은 수준에서 프로그램을 작성할 수 있게 도와주는 도구로 개발하는 동안 준수해야하는 규칙과 구조를 제공한다.

    🎯 웹 서버의 기본 개념과 역할을 동일하더라도, 각각의 웹 서버나 프레임워크는 자신만의 특징과 장점을 가지고 있다. 이를 파악하고 현재 상황에 가장 적합한 도구를 선택하는 것이 가장 중요!!

Express.js 란?

🎯 Express.js는 Node.js로 서버를 빠르고 간편하게 만들 수 있게 도와주는 가장 대표적인 웹 프레임워크이다. 이를 통해 개발자들은 효율적이고 빠르게 백엔드 서버를 구축할 수 있게된다.

  • Express.js의 가장 큰 특징 중 하나는 미들웨어(Middleware)를 지원하는 것이다. 미들웨어는 사용자의 요청과 응답 사이에 위치하며, 특정 기능을 수행하는 함수를 의미한다. 예를들면 인증, 로깅 , 에러 처리 핸들러 등을 담당하는 다양한 미들웨어를 사용할 수 있게 된다.
  • Express.js 이외에도 Node.js 환경에서는 다양한 웹 프레임워크가 존재하지만, Express.js는 Node.js 환경에서 가장 오래 사용되고 사랑받은 웹 프레임워크이므로, 개발자 커뮤니티가 매우 활발하다.
  • 🎯 Express.js와 웹 서버(Web Server)는 동일하지 않다!
  • 🎯 Express.js는 웹서버 자체가 아니라, 웹 서버를 구현하는데 도움을 주는 도구이다. 즉, Node.js를 위한 웹 프레임워크이며, 우리는 웹 서버를 구현할 때 Express.js 프레임워크를 사용하게 될 것이다!!

Module

Module이란 ?

💡 모듈(Module)Javascript를 파일 단위로 분리된 코드 덩어리를 일컫는다.
여기서 Javascript 파일특정한 기능을 가진 여러 개의 함수변수들의 집합체를 의미한다.

    1. 모듈(Module)은 하나의 모듈에서 다른 모듈을 호출하여 사용할 수 있다.
    1. 모듈(Module)은 그 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용할 수 있다.
    1. 보통 1개의 파일이 1개의 모듈이 된다.

모듈이 필요한 이유는 ?

  • 모듈은 코드 베이스를 분리할 수 있으며, 이를 통해 코드를 구조적으로 관리할 수 있다.
  • 또한 코드를 재사용 가능하게 만들고, 코드의 함수와 변수중 일부만 외부에서 사용하도록 노출시킬 수 있다.(정보은닉)

그럼 Module은 어떻게 사용할까?

  • Module 은 주로 export 명령어를 변수나 함수 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근 → 이렇게 하면 하나의 큰 프로그램들을 작게 나누어, 다른 파일에서도 재사용 할 수 있다.
  • 또는 import, require 명령어를 사용하면 외부 모듈의 기능을 가져올 수 있음 !
import { add } from './math.js'
// 이 코드에서 ./math.js는 파일 경로를 나타내는데, ./으로 시작하는 경로는 ‘상대 경로’ 라는 것을 나타내게 된다.
// 즉, ./math.js는 현재 파일이 위치한 디렉토리에서 math.js 라는 이름의 파일을 찾는 것을 의미

화살표 함수

/** 화살표 함수 export **/

// 모듈을 호출했을 때, addArrowFunction 키 값에는 addArrowFunction 변수 함수가 가지고 있는 값이 할당된다.
export const addArrowFunction = (a, b) => {
  return a + b;
}
/** 화살표 함수 import **/

import { addArrowFunction } from './math.js'

console.log(addArrowFunction(5, 3));

// Print: 8

익명 함수

/** 익명 함수 export **/

// 모듈을 호출했을 때, addAnonymousFunction 키 값에는 (a,b){return a + b;} 익명 함수가 할당된다.
export const addAnonymousFunction = function (a, b) {
  return a + b;
}
/** 익명 함수 import **/

import { addAnonymousFunction } from './math.js'

console.log(addAnonymousFunction(9, 3));

// Print: 12

default Object

/** export default Object **/

// 모듈을 호출했을 때, add 키 값에는 add 함수가 들어가는 방법이다.
const defaultObject = {
  add: add,
}

export default defaultObject;
/** import default Object, 모듈 전체 가져오기 **/

import * as math from './math.js'

console.log(math.default.add(13, 8));

// Print: 21

/** import default Object, 모듈 전체 가져오기 **/

import { default as defaultObject } from './math.js'

console.log(defaultObject.add(17, 2));

// Print: 19

default Function

/** export default Function **/

// 모듈을 호출했을 때, defaultAddFunction 함수가 들어가는 방법이다.
const defaultAddFunction = function (a, b) {
  return a + b;
}

export default defaultAddFunction;
/** import default Function, 모듈 전체 가져오기 **/
import * as math from './math.js'

console.log(math.default(20, 11));

// Print: 31


/** import default Function, default 모듈만 가져오기 **/
import { default as defaultAddFunction } from './math.js'

console.log(defaultAddFunction(12, 16));

// Print: 28

Module Remind

🎯 즉 모듈이란 크게 보았을때, javascript 코드를 논리적인 단위로 나누는 방법이다 !
모듈을 도입하게 된다면, 코드의 재사용성을 높이고 , 코드를 분리하여 관라할 수 있으므로 유지 보수가 수월해짐!!

또한 모듈은 코드의 네임스페이스를 분리하여 같은 이름의 함수나 변수의 충돌을 방지함.

0개의 댓글