CommonJ는 ES6 가져오기와 얼마나 다른가요?

JavaScript에서는 프로젝트에서 ECMAScript 6(ES6) 모듈이나 CommonJs 모듈을 사용할 수 있으며 이들 사이에는 프로그램 모듈이 로드되는 방식에 영향을 미치는 몇 가지 차이점이 있습니다. 이 기사에서는 각각의 작동 방식과 프로그램 실행에 미치는 영향을 살펴봅니다.

CommonJs 모듈.



CommonJs는 require 및 module.exports를 사용하는 Node.js의 기본 모듈 시스템입니다. 아래는 예시입니다.

// Importing modules
const fs = require('fs');
const fileDelete = require('./fileDeleter');
const fileName = require('./fileNamer');

const writeFile = (data) => {
  return fs.writeFileSync(fileName, data);
}

// Exporting writeFile module
modules.exports = writeFile;


require를 사용하면 필요한 모듈만 선택적으로 로드할 수 없습니다. 이것은 위의 예제에서 fileDelete 모듈이 필요하지 않거나 어디에서나 사용되지 않더라도 임포트된다는 것을 의미합니다. 또한 모듈 가져오기는 동기식이므로 fs 및 fileDelete 모듈을 가져오기 전에 fileName 모듈을 가져올 수 없으며 fileDelete 가져오기에 실패하면 프로그램에서 사용되지 않더라도 런타임 오류가 발생합니다. CommonJS 모듈은 node.js 서버에 대한 선택입니다.

ECMAScript 모듈



ECMAScript 모듈은 비교적 최신이며 가져오기 및 내보내기를 사용합니다. 아래는 CommonJ 예제를 위에서 ESM으로 변환한 것입니다.

// Importing modules
import fs from 'fs';
import fileDelete from './fileDeleter';
import fileName from './fileNamer';

const writeFile = (data) => {
  return fs.writeFileSync(fileName, data);
}

// Exporting writeFile module
export default function writeFile;


가져오기를 사용하면 필요한 모듈만 로드합니다. 예를 들어 위의 fileDelete 모듈은 어디에도 사용되지 않기 때문에 가져오지 않습니다. 또한 모듈 가져오기는 비동기식이므로 fs와 fileName을 동시에 가져옵니다. 일반적으로 새 프로젝트에 ESM을 사용하려고 합니다.

... .cjs와 .mjs는 어떻습니까?
.cjs는 CommonJS 모듈의 파일 확장자이고 .mjs는 ECMAScript 모듈의 파일 확장자입니다. Node.js는 기본적으로 .js 파일을 CommonJS 모듈로 취급합니다. "type": "module"을 package.json 파일에 추가하여 이를 변경할 수 있으므로 Node.js 환경 내에서 ECMAScript 모듈(.mjs 파일에 있음)을 사용할 수 있습니다. 이것은 Google ChromeV8이 권장하는 것입니다.

이 정보가 도움이 되었기를 바라며 더 많은 정보를 원하시면 체크아웃JavaScript modules 하십시오.

즐거운 코딩!

좋은 웹페이지 즐겨찾기