본문 바로가기
Node.js

Node.js 기본 모듈 (CommonJS, ES모듈)

by Programmer.Junny 2025. 1. 9.

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모듈 방식 또한 현업에서 자주 사용한다하니 익혀두면 좋을 것 같다.

최근댓글

최근글

skin by © 2024 ttuttak