- ajax(xhr), jquery이후 2005 부터 2009 사이 js 개발자들 scalable한 코드 관리 욕심 생김
- <script/> 너무 많아지고 관리 안댐
- 스코프 문제
- 의존성 관리 문제 (로드 순서)
- 로드시간 문제 (defer)
- 여러 차례 http request 날리는 것이 문제 http 1.1이라
- 2009년 1월, 모라 엔지니어 Kevin Dangoor를 중심으로 JS 모듈화 표준을 만들고자 하는 commonJS 그룹이 결성
- 3개월 뒤 commonJS API 0.1을 발표 (JS 모듈화의 0년)
- 2009년 nodeJS 등장하고 cjs 차용
- 서버사이드의 서버사이드 모듈화 표준이 목적이어서 브라우저 문제 해결 못해줌
- CJS 너무 오래 걸림 모듈 로드 동기적 blocking CJS
- event loop 덕분에 async하게 돌아갈 수 있는 v8 2008 나온걸 이용해서 AMD 등장
- amd에 기반한 모듈로더 RequireJS
- CJS 의 동기적 모듈 로딩 방식을 비동기로 한건 좋았지만
- AMD 모듈화 기법이 대세를 거슬러서 개발자들이 서버사이드용 코드, 브라우저용 코드를 따로 작성해나가고 있다는 점이 문제
- CJS 스타일 기반의 nodeJS로 자바스크립트기반 서버를 개발하고, npm으로 패키지를 모듈로 장착하고 싶었던 개발자들에게 AMD는 계륵
- 2010년 즈음, npm이 등장
- 개발자들 모듈 올리며 이들은 대부분 CJS 형식으로 만들어서 . CJS 스타일로 만든 코드를 AMD 스타일로 변환해야할 상황이 많아짐
- 이 문제를 해결하기 위해 등장한 것이 모듈 번들러, Browserify