잎서 자바스크립트의 모듈의 종류는 ESM와 CJS의 두가지 종류로 나뉜다고 말하고 있다.
ECMAScript 표준 일부인 모듈 시스템을 의미하며 JavaScript의 모듈을 정의하는 형식이다.
// ESM 모듈 예시 코드
// math.js
export function add(a, b){
return a + b;
}
// 화살표 함수로 만들어주는 방법
export const add = (a, b) => a + b;
//calculator.js
import { add } from './math.js';
console.log(add(2, 3)); // 출력 : 5
import * as totalCal from './math.js';
console.log(totalCal(2, 3)); // 출력 : 5
// Named Export/import 예시 코드
// namedExport.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
export const multiply = (a, b) => a * b;
export const divide = (a, b) => a / b;
// index.js
import {add, subtract, miltiply, divide} from './namedExport.js'
// Default Export / import 예시 코드
// defaultExport.js
export default class User {
constructor(name, age) {
this.name = name;
this.age = age;
}
greet() {
console.log(`Hello, my name is ${this.name}!`);
}
birthday() {
this.age += 1;
console.log(`Happy birthday ${this.name}, you are now ${this.age} years old.`);
}
}
// index.js
import NameChange from './defaultExport.js';
const user1 = new NameChange('Kim', 30);
user1.greet();
user1.birthday();
JavaScript 표준 일부인 모듈 시스템을 의미하며 주로 Node.js와 같은 환경에서 사용된다.
// CJS 모듈의 예시 코드
//calc.js
module.exports.add = (a, b) => a + b;
module.exports.sub = (a, b) => a - b;
//calculator.js
const calc = require('./calc.js');
calc.add(3 ,5);
calc.sub(5, 1);
// 실행결과
// 8
// 4
프로젝트의 요구사항과 개발 환경을 고려해서 정해야 한다.