본문 바로가기
✍ 따뜻한 개발 공부

ESM과 CJS

by 따따시 2023. 6. 15.

CommonJS

자바스크립트의 공식 스펙이 브라우저만 지원했기 때문에 이를 서버사이드 및 데스크탑 어플리케이션에서 지원하기 위한 노력이 있었다.
그걸 위해 만든 그룹이 CommonJS이며 여기선 자바스크립트가 범용적인 언어로 쓰이기 위한 스펙을 정의하고 있다.
그룹을 만들었을 때, 범용적인 언어로 만들기 위해서는 '모듈화의 개념'이 필요했고 이 그룹만의 모듈 방식을 정의하게 되었는데 그것이 바로 CommonJS 방식의 모듈화다.
다른 모듈을 사용할 때는 require 를, 모듈을 해당 스코프 밖으로 보낼 때에는 module.exports 를 사용하는 방식으로,
Node.js에선 현재 이 방식을 사용하고 있다.
[ 출처 ] https://baeharam.netlify.app/posts/javascript/module

 

 

client side js는 <script>태그를 사용해 외부 스크립트 파일을 가져오더라도 파일마다의 스코프를 갖지 않고 전역 스코프로 합쳐지므로 스코프가 엉망이 되는 문제가 있었고, js는 브라우저 전용에 국한하지 않고 실행하기 위해선 '파일 단위'의 모듈화가 절실했고, 

이 상황에서 등장한게 CommonJS 와 AMD 이다.

 

Node.js는 CommonJS를 채택하고 있다.

자쓰는 es6 이후에 ESM이 공식적이며 표준화된 모듈화 시스템이 되었다.

 

하지만 Node.js가 cjs를 채택하고 있으므로 cjs와 esm은 둘 다 알아야 한다.

 

esj는 CommonJS에 없는 종류의 비동기를 도입한다. 

CJS에서는 모듈과 그 아래의 의존성이 로드되고, 인스턴스 화 되어 한꺼번에 모든 평가가 이루어진다.

 

 

댓글