Node.js의 모듈 시스템은 코드의 재사용성을 높이고, 코드의 관리와 유지보수를 용이하게 합니다. Node.js에서 모듈은 독립된 코드 조각으로, 필요한 곳에서 가져와 사용할 수 있습니다. Node.js 모듈 시스템의 기본적인 사용 방법과 예제를 통해 이해해봅시다.
모듈 시스템 이해
Node.js에서는 각 파일이 모듈로 간주됩니다. 모듈을 가져오거나 내보내기 위해 require와 module.exports 또는 exports를 사용합니다.
1. 내장 모듈 (Built-in Modules)
Node.js는 여러 유용한 내장 모듈을 제공합니다. 예를 들어, 파일 시스템 조작을 위한 fs, HTTP 서버 생성을 위한 http 모듈 등이 있습니다.
예제: 내장 모듈 사용
const fs = require('fs');
// 파일 읽기
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
2. 사용자 정의 모듈 (User-defined Modules)
사용자 정의 모듈을 만들어 코드의 재사용성을 높일 수 있습니다. 이를 위해 module.exports 또는 exports 객체를 사용합니다.
예제: 간단한 수학 모듈 만들기
- math.js 파일 생성
// math.js
function add(a, b) {
return a + b;
}
function subtract(a, b) {
return a - b;
}
module.exports = {
add,
subtract
};
- main.js 파일에서 모듈 사용
// main.js
const math = require('./math');
console.log(math.add(2, 3)); // 출력: 5
console.log(math.subtract(5, 2)); // 출력: 3
위 예제에서 math.js는 add와 subtract 함수를 내보내는 모듈입니다. main.js에서는 require 함수를 사용하여 math 모듈을 가져오고, 그 함수들을 사용할 수 있습니다.
3. 모듈의 module.exports와 exports
module.exports는 모듈에서 내보내는 객체를 설정합니다. exports는 module.exports의 별칭입니다. 둘의 차이점을 이해하는 것이 중요합니다.
예제: module.exports와 exports 비교
- module1.js (module.exports 사용)
// module1.js
function greet(name) {
return `Hello, ${name}!`;
}
module.exports = greet;
- module2.js (exports 사용)
// module2.js
exports.greet = function(name) {
return `Hi, ${name}!`;
};
- main.js에서 두 모듈 사용
// main.js
const greet1 = require('./module1');
const greet2 = require('./module2').greet;
console.log(greet1('Alice')); // 출력: Hello, Alice!
console.log(greet2('Bob')); // 출력: Hi, Bob!
위 예제에서 module1.js는 module.exports를 사용하여 함수 자체를 내보냅니다. module2.js는 exports를 사용하여 객체의 프로퍼티로 함수를 내보냅니다.
요약
- 내장 모듈 사용: Node.js가 제공하는 기본 모듈들을 사용하여 파일 시스템, HTTP 등 다양한 기능을 활용할 수 있습니다.
- 사용자 정의 모듈 작성 및 사용: 필요한 기능을 모듈로 작성하여 다른 파일에서 require로 가져와 사용할 수 있습니다.
- module.exports와 exports: 모듈에서 내보낼 때 module.exports와 exports의 차이를 이해하고 적절히 사용합니다.
Node.js의 모듈 시스템을 이해하고 사용하는 것은 더 큰 애플리케이션을 구축할 때 매우 유용합니다.
'프로그래밍 > Node.js & JavaScript' 카테고리의 다른 글
처음 배우는 Node.js 강의. 1주차: Node.js 기본 개념 및 환경 설정 (1) | 2024.05.22 |
---|---|
Node.js를 처음 배우는 분을 위한 기초 커리큘럼 (2) | 2024.05.18 |
처음 배우는 JavaScript 강의. 5주차: 비동기 처리 (3) async 함수와 await 키워드 (0) | 2024.05.15 |
처음 배우는 JavaScript 강의. 5주차: 비동기 처리 (2) Promise 기본 사용법 (2) | 2024.05.11 |
처음 배우는 JavaScript 강의. 5주차: 비동기 처리 (1) setTimeout과 setInterval (50) | 2024.05.04 |