웹 어플리케이션은 점점 더 데스크톱 어플리케이션과 같이 진화를 하고 있으며 많은 부분에서 패턴들이 적용되고 있다. 문제는 이런 과정에서 발생하게 되는 종속성을 어떻게 관리하여야 할지에 대한 문제가 점차 대두되고 있다. 자바스크립트는 이런 종속성을 관리할 수 있는 기능을 제공하지 않기 때문에 여러 가지 방법을 추가적으로 적용하여야 한다. RequireJS 도 이런 종속성을 관리하는 한 가지 방법이다. 대외적으로 많이 언급되고, 사용되는 것으로 판단이 되기 때문에 사용방법을 정리해 보도록 한다. 한 마디로 정리하면 “RequireJS 는 자바스크립트 파일/모듈 로더” 라고 생각하면 된다. 웹 브라우저에서 사용하는데 최적화되어 있지만 Rhino 나 Node 와 같은 다른 환경에서도 사용할 수 있다. RequireJS 를 사용하는 이유는 모듈 방식으로 스크립트를 로딩하므로 웹 어플리케이션의 종속성관리와 품질 및 성능을 향상시킬 수 있다. 언제 써야 할까? 일반적으로 자바스크립트를 하나의 파일로 작성하는 경우가 많다. 그런데 코드가 점점 더 방대해지면 나중에 수정하고 관리하는 것이 쉽지 않게 된다. 이를 위해서 기능이나 용도별로 여러 파일로 분할하는 선택을 하게 된다. 그런데 문제는 이런 상황이 되면 사용해야 하는 페이지에 스크립트 태그들이 증가를 하고 다른 파일에 정의된 기능을 사용하기 위해서 전역변수들도 같이 증가하게 된다. 따라서 페이지에서도 관련된 스크립트들과 변수들도 지저분하게 나열할 수 밖에는 없고, 또한 가장 큰 문제는 이런 스크립트 파일을 다운로드 하기 위해서 HTTP 요청이 네트워크 대역폭을 많이 차지하여 점점 더 페이지의 로딩이 느려지는 상황을 초래하게 된다. 아마도 대부분은 이런 상황에서 대안을 찾게 된다. 특히나 대형 사이즈의 웹 앱의 어플리케이션을 작성한다면 더욱 시급한 대안이 필요할 수 밖에는 없다. 이 때 필요한 부분이 AMD (Asysnchronous Module Definition) 방식의 스크립트 로더다. 즉, 비 동기적으로