카테고리 없음

[Node.js] 모듈(module)

Milb 2023. 4. 22. 18:26

모듈(module)

  • 프로그램을 구성하는 구성 요소로, 관련된 데이터와 함수를 하나로 묶은 단위
  • 독립된 기능을 갖는 것(함수, 파일)들의 모임
  • 보통 하나의 소스 파일에 모든 함수를 작성하지 않고, 함수의 기능별로 따로 모듈을 구성
  • 모듈화 프로그래밍 : 프로그램 코드를 기능별로 나눠서 독립된 파일에 저장하여 관리하는 방식
  • Javascript 파일 단위로 분리된 코드
  • 여기서 Javascript 파일은 특정한 기능을 가진 여러 개의 함수와 변수들의 집합

모듈이 필요한 이유

  • 코드 베이스를 분리할 수 있으며, 이를 통해 코드를 구조적으로 관리할 수 있습니다.
  • 코드를 재사용 가능하게 만들어줍니다. 즉, 모듈화(modularize) 됩니다.
  • 모듈의 인터페이스(Interface)만 노출 시킬 수 있습니다. 즉, 인터페이스 이외에는 모든 정보를 은닉하는 정보 은닉을 구현 할 수 있게 됩니다.
  • 기능별로 함수를 만들어 함수를 호출하는 방식으로 프로그래밍을 하면 유지보수가 훨씬 편해집니다.
  • 종속성을 관리할 수 있게 됩니다.

모듈의 종류

모듈은 Node.js에서 제공하는 것도 있고, 누군가가 만들어 놓은 모듈이 있으며, 직접 만들 수도 있습니다.

모듈을 라이브러리화 시켜서 깃헙에 공유할 수도 있고, 비즈니스 로직에 따라 모듈을 만들어 사용할 수도 있고

굉장히 자유롭습니다.

  • 외장 모듈
    • 일반 Node.js 개발자들이 만들어 놓은 모듈(라이브러리)입니다.
    • 외장 모듈을 사용하기 위해서는 npm( Node Package Manager )을 사용합니다.
  • 내장 모듈
    • Node.js를 설치하고 나면 그 안에 이미 제공되어지는 모듈을 의미합니다.
    • 내장 모듈은 이미 Node.js를 설치할 때 존재하기 때문에 npm을 사용하지 않습니다.

CommonJS

브라우저 이외의 환경에서 모듈을 사용할 수 있도록 고안된 명세입니다.

설정을 따로 추가하지 않은 이상, Node.js에서는 CommonJS를 기본으로 사용하게 됩니다. 

 

CommonJS는 전역 스코프에 정의 되어있는 require 함수로 대표됩니다. require함수는 경로 혹은 문자열을 가지고 내부 알고리즘을 통해 모듈을 가져오고 종속성을 처리합니다.

모듈 사용하기

- `export` 명령어를 **변수**나 **함수** 앞에 붙이면 외부 모듈에서 해당 변수나 함수에 접근할 수 있습니다.
- `import`, `require` 명령어를 사용하면 외부 모듈의 기능을 가져올 수 있습니다.
- ❓ `import`, `require`는 어떻게 구분해서 사용할까요?
  - 자바스크립트는 대표적으로 **CommonJS**, **ES6(ES2015)** 방식으로 모듈 시스템을 관리할 수 있습니다.
  - `require`는 현재 학습하고 있는 **CommonJS**로 모듈 시스템을 관리할 때 사용합니다.
  - `import`는 **ES6(ES2015)**로 모듈 시스템을 관리할 때 사용합니다.

1. 함수 생성하기

// modules/math.js
function add(a, b) {
 return a + b;
}

2. 함수 내보내기

// modules/math.js
module.exports = add;

3. 함수 사용하기

// modules/run.js
const add = require("./math");
console.log(add(3, 4));
// Print: 7

 

참조 

🙈[Node.js] module 사용하기🐵