<html>
<script src="/src/foo.js"></script>
<script src="/src/bar.js"></script>
<script src="/src/baz.js"></script>
<script src="/src/qux.js"></script>
<script src="/src/quux.js"></script>
</html>
위의 파일로 구성된 어플리케이션을 빌드하려면 script tag를 통해 자바스크립트 파일을 html에 추가하고, 어플리케이션을 시작하기 위해서는 5개의 왕복 요청에 대한 http 요청이 필요하다.
하지만 모듈 번들로를 통해 , 이들을 모두 다음처럼 1개로 결합할 수 있다.
<html>
<script src="/dist/bundle.js"></script>
</html>
모듈 번들러의 한 종류로, webpack은 의존 관계를 가지는 자바스크립트, CSS, 이미지 등의 리소스를 하나로 묶도록(번들링하도록) 도와준다. webpack의 사용 목적은 번들을 통한 성능 최적화이다.
babel이란 자바스크립트 컴파일러로, 입력도 자바스크립트 코드고 출력도 자바스크립트 코드이. 엥? 그러면 왜쓸까요?? 그 이유는 버전때문이. 최신 버전의 자바스크립트 문법을 브라우저가 이해하지 못할 수도 있기 때문데, babel이 브라우저가 이해할 수 있는 문법으로 변환해주는 역할을 한다.
babel을 사용한다고 해서 자바스크립트의 모든 최신 문법을 브라우저가 이해할 수 있지는 않다. 왜냐하면, babel은 문법을 변환해주는 역할만 하기 때문이다. 따라서, babel-polyfill을 사용한다면, 프로그램이 맨 처음 시작될 때 현재 브라우저에서 지원하지 않는 함수를 찾아서, 각 object의 prototype에 붙여준다. polyfill을 사요하기 위해서는 별도의 작업이 필요하다.
babel은 compile-time에 실행되고, bable-polyfill은 run-time에 실행된다.