cjs, mjs 파일의 차이점

node
0 투표
cjs, mjs 파일의 차이점

1 답변

0 투표

CJSMJS 파일의 차이점은 각각 CommonJS 모듈 시스템과 ESM(ECMAScript Modules) 모듈 시스템을 사용하느냐에 따라 구분됩니다. 두 파일 포맷은 자바스크립트의 서로 다른 모듈 시스템을 따릅니다.

1. CJS (CommonJS Modules) - .cjs

  • 설명: .cjs 파일은 CommonJS 모듈 시스템을 사용하는 파일입니다. CommonJS는 Node.js의 기본 모듈 시스템이며, Node.js 초기 버전부터 사용되었습니다.
  • 문법: CommonJS에서는 모듈을 require()로 가져오고, module.exports로 내보냅니다.
  • 용도: CommonJS 모듈은 Node.js에서 기본적으로 사용되며, require() 문법을 통해 모듈을 가져옵니다. 주로 Node.js 프로젝트에서 많이 사용되었지만, 최신 표준인 ESM(ES Modules)으로 점차 전환되고 있습니다.

  • 예시:

    // CJS 문법
    const fs = require('fs'); // 모듈 가져오기
    
    module.exports = function add(a, b) { // 모듈 내보내기
      return a + b;
    };
    

2. MJS (ES Modules) - .mjs

  • 설명: .mjs 파일은 ESM(ECMAScript Modules) 모듈 시스템을 사용하는 파일입니다. ES Modules은 ECMAScript 2015(ES6)에서 도입된 표준 모듈 시스템입니다.
  • 문법: ESM에서는 importexport 키워드를 사용합니다. 이 모듈 시스템은 JavaScript의 공식 표준이 되었으며, 브라우저에서도 기본적으로 지원합니다.
  • 용도: .mjs 파일은 최신 JavaScript 표준 모듈 시스템인 ESM을 사용하며, 브라우저와 Node.js 모두에서 지원됩니다. Node.js에서도 ES Modules를 사용할 수 있지만, .mjs 확장자를 사용하는 파일로 명시해 주거나, package.json"type": "module"을 설정해야 합니다.

  • 예시:

    // MJS 문법
    import fs from 'fs'; // 모듈 가져오기
    
    export function add(a, b) { // 모듈 내보내기
      return a + b;
    };
    

주요 차이점

구분 CJS (.cjs) MJS (.mjs)
모듈 시스템 CommonJS (Node.js 전용) ES Modules (ECMAScript 표준, 브라우저/Node.js 지원)
모듈 가져오기 require() import
모듈 내보내기 module.exports 또는 exports export
비동기 처리 CommonJS는 모듈 로드가 동기적으로 이루어짐 ES Modules는 비동기적 로드를 지원함
사용 환경 Node.js에서 기본적으로 사용됨 Node.js, 브라우저 모두에서 사용 가능
확장자 .cjs .mjs 또는 .js (with "type": "module")

Node.js에서의 CJS와 MJS 사용

  • CommonJS (CJS)는 Node.js의 기존 모듈 시스템으로, 기본적으로 Node.js는 CommonJS 모듈을 사용합니다. 만약 프로젝트에서 .cjs 파일을 사용하거나, require() 문법을 사용하고 있다면, CommonJS 모듈을 사용 중입니다.

  • ES Modules (MJS)는 ECMAScript 표준 모듈 시스템으로, .mjs 확장자를 사용하거나, package.json"type": "module"을 설정한 경우 .js 파일에서도 ESM을 사용할 수 있습니다.

    • package.json에서 ESM 사용 설정:
      {
        "type": "module"
      }
      
      위와 같이 설정하면 .js 확장자를 가진 파일에서도 import/export 문법을 사용할 수 있습니다.

언제 CJS와 MJS를 사용하나요?

  • CJS (.cjs): 기존의 Node.js 프로젝트나 CommonJS 모듈에 의존하는 패키지들과 호환성을 유지해야 할 경우.
  • MJS (.mjs): 최신 JavaScript 기능을 사용하거나, 브라우저에서도 동일한 모듈 시스템을 사용하고 싶은 경우. 또한, 새로운 Node.js 프로젝트에서 ESM을 사용할 때는 .mjs 파일을 사용하는 것이 좋습니다.

ESM(ES Modules)은 JavaScript의 표준 모듈 시스템으로 자리 잡았으며, 최신 프로젝트에서는 점차 ESM을 사용하는 것이 권장되고 있습니다. CommonJS는 여전히 많은 프로젝트에서 사용되고 있지만, ESM으로 전환하는 추세입니다.

구로역 맛집 시흥동 맛집
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
add
...