
Node.js – 모듈 시스템 – 0 – CommonJS
소제목: Node.js와 모듈 시스템의 개요
Node.js는 JavaScript를 서버 사이드에서 실행할 수 있는 환경을 제공하는 플랫폼입니다. Node.js를 사용하면 JavaScript를 사용하여 서버 애플리케이션을 개발할 수 있습니다. 이 때, Node.js의 핵심 개념 중 하나는 모듈 시스템입니다. 모듈 시스템은 코드를 재사용하고 구성 요소를 쉽게 조직화하기 위한 방법입니다.
Node.js에서 모듈 시스템을 구현하는 방법 중 하나는 CommonJS입니다. CommonJS는 Node.js에서 기본적으로 지원되는 모듈 시스템입니다. CommonJS 모듈 시스템은 모듈을 정의하고 가져오는 방식을 제공하여 코드를 구조화하고 모듈 간의 의존성을 관리할 수 있습니다.
소제목: CommonJS 모듈 시스템의 기본 구조
CommonJS 모듈 시스템은 require와 module.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 모듈에서 add와 subtract 함수를 정의하고 module.exports에 할당하여 외부로 공개하고 있습니다. 그리고 index.js 파일에서 math 모듈을 가져와 add와 subtract 함수를 사용하고 있습니다. 이렇게 하면 모듈을 효과적으로 구성하고 필요한 곳에서 재사용할 수 있습니다.
소제목: CommonJS 모듈 시스템의 주의해야 할 점
CommonJS 모듈 시스템을 사용할 때 주의해야 할 몇 가지 점이 있습니다.
첫째, require 함수는 동기적으로 동작합니다. 즉, require 함수를 만나면 해당 모듈을 동기적으로 가져올 때까지 코드의 실행이 멈춥니다. 이는 서버 애플리케이션에서는 큰 문제가 되지 않지만, 웹 애플리케이션에서는 성능 문제를 일으킬 수 있습니다. 따라서 웹 애플리케이션 개발 시에는 동기적인 require 대신 비동기적인 모듈 로딩 방식을 고려해야 합니다.
둘째, CommonJS 모듈 시스템은 파일 단위로 모듈을 관리합니다. 각 파일은 독립적인 모듈로 취급되며, 파일 당 하나의 모듈만 내보낼 수 있습니다. 이는 코드의 구조화를 도모하고 모듈 간의 의존성을 명확하게 관리하는 데 도움을 줍니다.
셋째, CommonJS 모듈 시스템은 웹 브라우저에서는 기본적으로 지원되지 않습니다. 하지만 웹 브라우저에서도 CommonJS 모듈을 사용하기 위해 번들러(bundler)를 사용하거나 웹팩(Webpack)과 같은 도구를 활용할 수 있습니다. 번들러는 여러 개의 모듈을 하나의 파일로 묶어서 웹 브라우저에서 사용할 수 있는 형태로 변환해줍니다.
CommonJS 모듈 시스템을 사용하면 코드를 모듈로 구성하여 재사용성을 높일 수 있습니다. Node.js에서는 기본적으로 CommonJS 모듈 시스템을 지원하므로, 모듈 시스템을 활용하여 프로젝트를 구조화하고 관리하는 데 활용할 수 있습니다. 주의해야 할 점을 유의하면서 모듈 시스템을 사용하여 더욱 효과적인 개발을 진행해보세요.
