사진 출처 :https://webpack.kr/
들어가기에 앞서 ...
간단히 말하면 각각의 분리된 파일들을 모듈이라고 이라고 합니다. 전체 애플리케이션의 일부를 독립된 코드로 분리한 파일로 나누어 관리하는 것을 모듈화라고 합니다.프로그램을 모듈로 개발하고 배포할 수 있게 하기 위해 CJS, AMD, UMD, ESM 등 모듈 패턴이 등장했었습니다.
모듈화를 통해 기능별로 구현된 코드를 재사용할 수 있고, 코드가 캡슐화되기 때문에 임의적으로 코드가 변경되는 것을 방지할 수 있다는 장점들이 있습니다.
그러나, 프로그램이 커질수록 파일의 갯수가 많아져 각 변수들의 스코프나 호출 시 발생하는 네트워크 비용과 시간이 늘어난다는 한계가 있습니다.
이를 해결하기 위해 나온 방법이 번들링입니다.
웹서버에 배포하기 전에는 하나의 파일로 묶는데 이렇게 하면 브라우저에서 서버로 요청하는 HTTP 갯수가 줄게되며 사용자 경험을 향상시킬 수 있습니다. 또한, 코드의 크기를 줄이는 것 뿐만 아니라, 코드 난독화, 최적화 등을 지원하기 때문에 보안과 성능 향상에도 크게 기여합니다.
모듈화된 파일을 하나의 모듈을 묶는것을 번들링이라고 하고, 여러개의 서로 연관된 파일을 하나의 번들 파일로 묶어주는 것을 모듈 번들러라고 합니다.
webpack은 여러 개의 모듈(javascript, css, html, image 등)을 하나의 javascript 파일로 묶어주는 모듈 번들러(bundler)입니다.
import "./App.css";
위 명령문은 App 컴포넌트에 관련된 CSS를 불러옵니다. 어떤 변수 이름이나 from 지시가 없다는 것을 주목해주세요. 이 특별한 import 구문은 JavaScript 모듈 구문이 아니라 웹팩(Webpack)으로부터 온 것입니다. 웹팩은 create-react-app이 우리의 모든 JavaScript 파일을 함께 번들하고 브라우저에 제공하기 위해 사용하는 도구입니다.