1. Node.js 모듈 시스템 개요

2025. 3. 11. 21:38백엔드/NODE.JS

728x90

 

1. Node.js 모듈 시스템 개요

  • 모듈의 정의:
    Node.js에서는 각 파일이 하나의 모듈로 취급됩니다. 이 모듈은 독립된 네임스페이스를 가지므로, 다른 모듈과 변수나 함수 이름이 충돌하지 않습니다.
  • 목적:
    • 코드의 재사용성 향상
    • 코드의 구조적 관리 및 유지보수 용이
    • 기능별로 코드를 분리하여 협업과 테스트를 쉽게 만듦

2. require() 함수 사용법

  • require()란?
    Node.js의 require() 함수는 다른 모듈을 불러오기 위해 사용됩니다. 이 함수는 모듈을 한 번 로드하면 캐싱하여, 이후 동일 모듈을 재요청할 때는 캐시된 결과를 반환합니다.
  • 기본 사용법:
    • 예를 들어, 로컬 파일인 math.js를 불러올 때:
      // math.js
      function add(a, b) {
        return a + b;
      }
      module.exports = { add };
      
      // main.js
      const math = require('./math');
      console.log(math.add(2, 3)); // 5 출력
      
  • const 모듈이름 = require('모듈경로');
  • 모듈 경로 규칙:
    • 내장 모듈: 예를 들어, fs, path 등 Node.js에 기본 내장된 모듈은 모듈 이름만 사용합니다.
      const fs = require('fs');
      
    • 외부 모듈: npm을 통해 설치한 모듈은 설치 경로에 따라 이름을 사용합니다.
      const express = require('express');
      
    • 로컬 모듈: 파일 경로를 지정하여 불러옵니다. 경로는 상대경로나 절대경로를 사용할 수 있습니다.
      const myModule = require('./lib/myModule');
      

3. 모듈 내보내기: module.exports와 exports

  • module.exports:
    • 모듈에서 외부로 내보낼 값을 설정합니다. 보통 객체, 함수, 클래스 등을 할당하여 다른 파일에서 사용할 수 있게 만듭니다.
    • 예제:
      // logger.js
      function log(message) {
        console.log(message);
      }
      module.exports = log;
      
      // main.js
      const log = require('./logger');
      log('Hello, world!');
      
  • exports 객체:
    • exports는 module.exports의 단축 표현입니다. 단, exports에 속성을 추가하는 방식으로 내보내야 합니다.
    • 예제:
      // math.js
      exports.add = (a, b) => a + b;
      exports.subtract = (a, b) => a - b;
      
      // main.js
      const math = require('./math');
      console.log(math.add(5, 3)); // 8 출력
      
  • 주의 사항:
    • 모듈에서 exports 객체와 module.exports를 혼용할 경우, 모듈 전체가 제대로 내보내지 않을 수 있으므로 하나의 방식으로 통일하는 것이 좋습니다.

4. 모듈 캐싱

  • 캐싱 동작 원리:
    한 번 로드된 모듈은 Node.js에 의해 캐시에 저장되며, 이후 동일한 모듈을 require할 경우 캐시된 결과를 바로 반환합니다.
    • 이로 인해 동일 모듈의 초기화 코드는 단 한 번만 실행됩니다.
    • 캐싱은 성능 향상에 도움을 주지만, 상태를 가진 모듈을 사용할 때는 주의해야 합니다.

5. 모듈의 유형

  • 내장 모듈 (Built-in Modules):
    Node.js에 기본으로 포함되어 있는 모듈로, 별도의 설치 없이 바로 사용할 수 있습니다.
    예) fs, http, path 등
  • 외부 모듈 (External Modules):
    npm(Node Package Manager)을 통해 설치하여 사용하는 모듈입니다.
    예) express, dotenv, passport 등
    • 설치 후 require('모듈명')을 통해 불러옵니다.
  • 로컬 모듈 (Local Modules):
    애플리케이션 내에서 직접 작성한 모듈입니다.
    • 파일 경로를 지정하여 불러오며, 보통 프로젝트의 폴더 구조에 맞춰 관리합니다.

6. 공식 문서 및 추가 학습 자료

  • 공식 Node.js 모듈 문서:
    https://nodejs.org/api/modules.html
    이 문서에서는 모듈 로딩 메커니즘, 캐싱, module.exports와 exports의 사용법 등 자세한 내용을 확인할 수 있습니다.
  • 튜토리얼 및 예제:
    • Node.js 공식 홈페이지의 가이드와 튜토리얼
    • 다양한 온라인 강의(예: Udemy, YouTube) 및 블로그 포스팅
    • GitHub의 오픈소스 프로젝트를 통해 실제 코드 구조를 학습

요약

  • require(): Node.js에서 다른 모듈을 불러오는 함수이며, 모듈은 한 번 로드된 후 캐싱되어 재사용됩니다.
  • module.exports & exports: 모듈에서 외부로 값을 내보내는 방식입니다. 한 파일 내에서 하나의 객체나 함수 전체를 내보낼 때는 module.exports를, 여러 속성을 내보낼 때는 exports 객체를 사용합니다.
  • 모듈 유형: 내장 모듈, 외부 모듈, 로컬 모듈로 구분되며, 각 유형에 따라 불러오는 방법이 다릅니다.

 

728x90

'백엔드 > NODE.JS' 카테고리의 다른 글

서버 URL 및 엔드포인트  (0) 2025.03.13
Passport  (2) 2025.03.11
$ne와 $nin  (0) 2025.03.11
node.js 카카오 로그인  (0) 2025.03.11
User 총 개수 조회 기능 (/api/participations) 정리  (0) 2025.03.11