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에서는 모듈과 그 아래의 의존성이 로드되고, 인스턴스 화 되어 한꺼번에 모든 평가가 이루어진다.
'✍ 따뜻한 개발 공부' 카테고리의 다른 글
[스프링부트] 뷰단 건드릴 때마다 빌드하는거 넘무 싫어서 dev-tools 설정하면서 애먹었던 일 (0) | 2023.08.22 |
---|---|
[java] 자바의 인터페이스 (0) | 2023.07.09 |
Next.js에서 mediapipe를 사용하려다 만난 ESM / CJS 의 차이 (0) | 2023.06.09 |
[읽는듕] 클린코드 (0) | 2023.06.05 |
[dialogflow] fulfilment 사용하기 (0) | 2023.06.05 |
댓글