Node.js – 모듈 시스템 – 0 – CommonJS

ES6(ECMAScript 2015) - 객체 리터럴 확장 - 2 - 프로토타입 축약
Node.js – 모듈 시스템 – 0 – CommonJS

Node.js – 모듈 시스템 – 0 – CommonJS

소제목: Node.js와 모듈 시스템의 개요

Node.js는 JavaScript를 서버 사이드에서 실행할 수 있는 환경을 제공하는 플랫폼입니다. Node.js를 사용하면 JavaScript를 사용하여 서버 애플리케이션을 개발할 수 있습니다. 이 때, Node.js의 핵심 개념 중 하나는 모듈 시스템입니다. 모듈 시스템은 코드를 재사용하고 구성 요소를 쉽게 조직화하기 위한 방법입니다.

Node.js에서 모듈 시스템을 구현하는 방법 중 하나는 CommonJS입니다. CommonJS는 Node.js에서 기본적으로 지원되는 모듈 시스템입니다. CommonJS 모듈 시스템은 모듈을 정의하고 가져오는 방식을 제공하여 코드를 구조화하고 모듈 간의 의존성을 관리할 수 있습니다.

소제목: CommonJS 모듈 시스템의 기본 구조

CommonJS 모듈 시스템은 requiremodule.exports라는 두 가지 핵심 개념을 사용합니다.

먼저, require는 다른 모듈을 가져오기 위해 사용되는 키워드입니다. 예를 들어, 다른 파일에 작성된 코드를 현재 파일에서 사용하고 싶을 때 require를 사용하여 해당 모듈을 가져올 수 있습니다. 이를테면, “math.js”라는 파일에 수학 관련 함수들이 정의되어 있다고 가정해봅시다. 그러면 다음과 같이 require를 사용하여 해당 모듈을 가져올 수 있습니다.

const math = require('./math');

위의 코드에서 require의 인자로는 가져오고자 하는 모듈의 경로를 지정합니다. 경로는 상대 경로 또는 절대 경로를 사용할 수 있습니다. CommonJS 모듈 시스템은 기본적으로 상대 경로를 사용합니다.

다음으로, module.exports는 모듈에서 외부로 내보내고자 하는 값을 설정하는 데 사용됩니다. 즉, 다른 파일에서 해당 모듈을 가져올 때 module.exports에 설정한 값들이 반환됩니다. 예를 들어, “math.js” 모듈에서 다음과 같이 함수를 내보내고자 한다면,

function add(a, b) {
  return a + b;
}

module.exports = {
  add: add
};

위의 코드에서 add 함수를 module.exports에 할당하여 외부로 공개하고 있습니다.

소제목: CommonJS 모듈 시스템의 사용 예시

CommonJS 모듈 시스템을 사용하여 실제로 모듈을 작성하고 가져오는 예시를 살펴보겠습니다.

math.js

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

module.exports = {
  add: add,
  subtract: subtract
};

index.js

const math = require('./math');

console.log(math.add(2, 3));       // 5
console.log(math.subtract(5, 2));  // 3

위의 예시에서 math.js 모듈에서 addsubtract 함수를 정의하고 module.exports에 할당하여 외부로 공개하고 있습니다. 그리고 index.js 파일에서 math 모듈을 가져와 addsubtract 함수를 사용하고 있습니다. 이렇게 하면 모듈을 효과적으로 구성하고 필요한 곳에서 재사용할 수 있습니다.

소제목: CommonJS 모듈 시스템의 주의해야 할 점

CommonJS 모듈 시스템을 사용할 때 주의해야 할 몇 가지 점이 있습니다.

첫째, require 함수는 동기적으로 동작합니다. 즉, require 함수를 만나면 해당 모듈을 동기적으로 가져올 때까지 코드의 실행이 멈춥니다. 이는 서버 애플리케이션에서는 큰 문제가 되지 않지만, 웹 애플리케이션에서는 성능 문제를 일으킬 수 있습니다. 따라서 웹 애플리케이션 개발 시에는 동기적인 require 대신 비동기적인 모듈 로딩 방식을 고려해야 합니다.

둘째, CommonJS 모듈 시스템은 파일 단위로 모듈을 관리합니다. 각 파일은 독립적인 모듈로 취급되며, 파일 당 하나의 모듈만 내보낼 수 있습니다. 이는 코드의 구조화를 도모하고 모듈 간의 의존성을 명확하게 관리하는 데 도움을 줍니다.

셋째, CommonJS 모듈 시스템은 웹 브라우저에서는 기본적으로 지원되지 않습니다. 하지만 웹 브라우저에서도 CommonJS 모듈을 사용하기 위해 번들러(bundler)를 사용하거나 웹팩(Webpack)과 같은 도구를 활용할 수 있습니다. 번들러는 여러 개의 모듈을 하나의 파일로 묶어서 웹 브라우저에서 사용할 수 있는 형태로 변환해줍니다.

CommonJS 모듈 시스템을 사용하면 코드를 모듈로 구성하여 재사용성을 높일 수 있습니다. Node.js에서는 기본적으로 CommonJS 모듈 시스템을 지원하므로, 모듈 시스템을 활용하여 프로젝트를 구조화하고 관리하는 데 활용할 수 있습니다. 주의해야 할 점을 유의하면서 모듈 시스템을 사용하여 더욱 효과적인 개발을 진행해보세요.

답글 남기기