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 출력
- 예를 들어, 로컬 파일인 math.js를 불러올 때:
- const 모듈이름 = require('모듈경로');
- 모듈 경로 규칙:
- 내장 모듈: 예를 들어, fs, path 등 Node.js에 기본 내장된 모듈은 모듈 이름만 사용합니다.
const fs = require('fs'); - 외부 모듈: npm을 통해 설치한 모듈은 설치 경로에 따라 이름을 사용합니다.
const express = require('express'); - 로컬 모듈: 파일 경로를 지정하여 불러옵니다. 경로는 상대경로나 절대경로를 사용할 수 있습니다.
const myModule = require('./lib/myModule');
- 내장 모듈: 예를 들어, fs, path 등 Node.js에 기본 내장된 모듈은 모듈 이름만 사용합니다.
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 |