CommonJS 와 ECMAscript(ES) 모듈
require(), export.module() 등 다양한 모듈을 지원해주는 CommonJS가 있다.
CommonJS는 표준은 아니였으나 자바스크립트에서 지원해주는 부분이 적었기 때문에 과거에는 CommonJS를 많이 사용하였다.
그러나 최근 자바스크립트에서 ES모듈이 표준이되면서 최근에는 ES모듈을 사용하는 추세이다.
CommonJS 모듈
// 3_1_module.js
const odd = '홀수입니다.';
const even = '짝수입니다.';
module.exports = {
odd,
even
};
위와 같이 3_1_module.js 라는 파일내의 odd, even 상수를 외부 파일에서 접근할 수 있도록 하고 싶으면, module.exports를 사용하면 된다. 참고로 module은 global 객체의 내부 속성이다.
// 3_2_module.js
const { odd, even } = require('./3_1_module');
function checkOddOrEven(number){
if(number % 2){
return odd;
}else{
return even;
}
}
module.exports = checkOddOrEven;
require() 메서드는 module.exports로 등록된 속성들을 불러올 수 있다. 마찬가지로 require 도 global 의 내부 속성이다.
module.exports = checkOddOrEven; 를 보면 알 수 있듯 메서드를 exports에 등록할 수 있다.
// 3_3_module.js
const { odd, even } = require('./3_1_module');
const checkNumber = require('./3_2_module');
function checkStringOddOrEven(str){
if(str.length & 2){
return odd;
} else {
return even;
}
}
console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));
ES 모듈
//4_1_esmodule.mjs
export const odd = 'MJS 홀수입니다.';
export const even = 'MJS 짝수입니다.';
/**
// 필드(변수)를 미리 선언한 뒤에 export로 묶어서 내보내기
const odd = 'MJS 홀수입니다.';
const even = 'MJS 짝수입니다.';
export { odd, even };
*/
/**
const odd = 'MJS 홀수입니다.';
const even = 'MJS 짝수입니다.';
export default {
odd,
even
};
*/
ES 모듈은 export로 내보낼 수 있다. ES모듈은 확장자를 mjs로 하거나 'package.json' 내에 type : "module" 속성을 넣으면 js로 사용할 수 있다.
import { odd, even } from './4_1_esmodule.mjs';
function checkOddOrEven(num){
if (num % 2) {
return odd;
}
return even;
}
export default checkOddOrEven;
/**
// 함수 선언문에 직접 export 키워드를 붙이는 방법 (named export)
export function checkOddOrEven(num) {
if (num % 2) {
return odd;
}
return even;
}
*/
/**
// Named Export + 함수 표현식
const checkOddOrEven = function(num) {
return num % 2 ? odd : even;
};
// 객체 구조와 같이 export
export { checkOddOrEven };
*/
export로 내보낸 odd 와 even 은 'import 요소 from 파일이름' 의 형태로 받아올 수 있다.
마찬가지로 함수 또한 export로 내보낼 수 있는데, 위와 같이 다양한 방법이 쓰인다.
import { odd, even } from './4_1_esmodule.mjs';
import checkNumber from './4_2_esmodule.mjs';
function checkStringOddOrEven(str){
if(str.length % 2){
return odd;
}
return even;
}
console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));
CommonJS 방식만이 아닌 ES모듈 방식 또한 현업에서 자주 사용한다하니 익혀두면 좋을 것 같다.
'Node.js' 카테고리의 다른 글
익스프레스 웹 서버 만들기 - express로 HTML 서빙하기 (0) | 2025.01.12 |
---|---|
익스프레스 웹 서버 만들기 - express 서버 사용해보기 (1) | 2025.01.12 |
Node Package Manager (npm) (0) | 2025.01.11 |
http 모듈로 서버 만들기 (0) | 2025.01.11 |
Node.js 기본 모듈 (global,console,타이머 등등) (0) | 2025.01.09 |