CommonJS, Es Modules

Hunter Joe·2024년 9월 10일

1. CommonJS

  • CommonJS는 Nodejs에서 기본적으로 사용되는 모듈 시스템
  • requiremodule.exports를 사용하여 모듈을 가져오고 내보냄

CommonJS 특징

  • 동기적 모듈 로딩 : 모듈을 require할 때, 그 모듈이 즉시 실행. 이는 서버에서는 문제가 없지만, 브라우저에서는 비효율적일 수 있음
  • 서버에서는 파일 시스템이 빠르기 때문에 동기적 로딩 방식이 문제가 되지 않아 서버 측 환경에 적합하다.

CommonJS 구문

const express = require('express');

module export = {
  sayHello : function() {
    console.log("Hello");
  }
};

ES Modules(ESM)

  • ES Modules는 ES6에서 도입된 표준 모듈 시스템
  • 브라우저에서도 모듈을 사용할 수 있으며, importexport키워드를 사용하여 모듈을 가져오고 내보낼 수 있음.

ES Modules 특징

  1. 비동기적 모듈 로딩 :
    • 모듈을 import할 때, 비동기적으로 로드되고 이는 브라우저 환경에서 더 적합한 방식.
  2. 트리 쉐이킹 :
    • ES Modules는 코드에서 사용되지 않는 부분을 자동으로 제거하는 기능을 지원.
  3. ES표준 :
    • ES Modules는 JS의 공식 모듈 시스템으로, Nodejs에서도 지원되며, 브라우저에서도 기본적으로 지원된다.

ES Modules 구문

import express form 'express';

export const sayHello = () => {
  console.log("Hello");
}

차이점 정리

-제목--제목2=-제목-
모듈로딩동기적(require)비동기적(import)
문법require / module.exportsimport / export
트리 쉐이킹지원X지원O(사용하지 않는 코드는 제거(
Node.js기본Nodejs의 기본 모듈 시스템package.json에서 "type":"module"로 지정해야 사용가능
사용 환경주로 Nodejs환경브라우저 및 Nodejs 모두 사용 O

요약

두 시스템은 호환이 가능하지만, ES Modules가 더 많이 사용되고 있으며 최신 Nodejs버전에서도 ES Modules를 권창하는 추세다.

profile
Improvise, Adapt, Overcome

0개의 댓글