본문 바로가기

개발/Javascript

[모듈화] JavaScript 표준을 위한 움직임: CommonJS와 AMD 정리

NaverD2: JavaScript 표준을 위한 움직임: CommonJS와 AMD


모듈화는 아래와 같이 세 부분으로 이루어진다.

scope: 자신만의 독립적인 실행 영역

definition: 모듈 정의는 exports 객체 이용

usage: 모듈 사용은 require 함수 사용


서버사이드 Javascript의 경우에 파일마다 독립적인 파일 스코프가 있기 때문에 파일 하나에 모듈 하나를 작성하면 간단히 해결됨. 


브라우저에서는 필요한 모듈을 모두 내려받을 때까지 아무것도 할 수 없는 단점이 있었고 동적으로 <script>태그를 삽입하는 방법으로 가닥을 잡는다.

CommonJS에서는 이 문제를 해결하기 위해 파일을 require.define()으로 감싸 함수 클로저로 전역변수를 통제한다.


필요한 파일이 모두 로컬 디스크에 있어 바로 불러 쓸 수 있는 상황인 서버사이드에서는 CommonJS명세가, 필요한 파일을 네트워크를 통해 내려받아야 하는 브라우저와 같은 환경에서는 AMD가 보다 더 유연한 방법을 제공한다.

(AMD는 requireJS 같은 것이 있음)