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의 모듈 시스템을 이해하고 사용하는 것은 더 큰 애플리케이션을 구축할 때 매우 유용합니다.

 

+ Recent posts