CommonJS
CommonJS는 Node.js 환경에서 주로 사용되는 모듈 시스템
require 함수와 module.exports 또는 exports 객체를 사용하여 모듈을 가져오고 내보냄
module.exports.add = function(a, b) {
return a + b;
}
----------------------------------------
const add = function(a, b) {
return a + b;
}
module.exports = { add };
---------------------------------------
// 사용시
const math = require('./math');
특징
- 동기적 로딩: 서버 사이드 환경(Node.js)에서 일반적으로 문제가 되지 않지만, 브라우저 환경에서는 성능에 영향을 줌
- 단순한 모듈 구조: CommonJS는 모듈을 객체로 취급하여 간단하고 직관적으로 사용 가능
ESModule (ECMAScript Module)
ESModule은 ES6(ECMAScript 2015) 표준에서 도입된 모듈 시스템으로, JavaScript의 공식적인 모듈 시스템
import와 export 키워드를 사용
특징
- 비동기적 로딩: 브라우저 환경에서 특히 유용하며, 성능 최적화에 도움이 됨
- 정적 구조: ESModule은 정적 분석이 가능하므로 모듈의 종속성을 컴파일 타임에 확인할 수 있어 최적화나 트리 쉐이킹(Tree Shaking, 사용되지 않는 코드를 제거하는 최적화 기법)이 가능
- 스코프: ESModule은 파일마다 별도의 스코프를 가지므로 전역 변수 오염을 방지하는 데 도움이 됨
- 엄격 모드: ESModule은 항상 strict mode(엄격 모드)에서 실행