프로그래밍에서 모듈은 특정 기능을 수행하는 독립된 코드 묶음이다. 모듈을 사용하면 코드를 더 효율적이고 관리하기 쉽게 구성할 수 있다.
모듈은 코드의 재사용성을 높이고, 유지보수를 쉽게 하며, 이름 충돌을 방지하는데 도움을 준다. 각 모듈은 특정 기능을 수행하도록 설계되고, 다른 코드에서 필요한 경우 재사용될 수 있다.
CommonJS는 서버 측에서 사용되는 모듈 시스템이다. Node.js에서 주로 사용된다.
// math.js 파일
module.exports = {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
};
// 다른 파일에서
const math = require('./math');
console.log(math.add(1, 2)); // 3
AMD는 비동기 모듈 로딩에 중점을 둔 클라이언트 사이드 모듈 시스템이다. RequireJS 같은 라이브러리에서 주로 사용된다.
// math.js 파일
define([], function() {
return {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
};
});
UMD는 CommonJS와 AMD를 결합한 형태로, 서버와 클라이언트 양쪽에서 사용할 수 있는 유니버설 패턴이다.
// math.js 파일
(function(root, factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define([], factory);
} else if (typeof exports === 'object') {
// CommonJS
module.exports = factory();
} else {
// Browser globals
root.math = factory();
}
})(this, function() {
return {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
};
});
ES6에서는 import
와 export
키워드를 사용해 모듈을 다룰 수 있다.
// math.js 파일
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
// 다른 파일에서
import * as math from './math';
console.log(math.add(1, 2)); // 3
// math.js 파일
export default const add = (a, b) => a + b;
// 다른 파일에서
import add from './math';
console.log(math.add(1, 2)); // 3
모듈 시스템은 코드의 재사용성과 유지보수성을 높이고, 개발자가 코드를 더 효율적으로 구성하게 도와준다.