웹팩은 모듈 번들러
이다
CRA환경에 익숙해지면 웹팩을 왜사용하는지 이해하기 힘들다.
CRA가 나타나기 전, 필요한 기능을 하나의 js파일에 전부 작성했다.
하지만 점점 코드량이 많아지면서 하나의 페이지에 필요한 자바스크립트 파일이 많아지면서
HTTP통신을 통해 서버에 요청을 하면 js파일이 올 떄까지의 로딩시간이 너무 오래 걸렸다.
이것을 해결하기위해 개발은 파일별로 하되 실제 브라우저에서는 하나의 파일로 병합, 압축 해준다
바벨은 Javascript 컴파일러
이다.
사람이 읽기 편한 프로그래밍 언어
➡ 컴퓨터가 읽기 편한 코드
로 바꿔준다
a = 1
위의 변수 경우에 값을 할당하는 코드는 사람이 읽기 편하지만, 컴퓨터는 알아듣기 어려워 한다.
이것을 최종적으로는 01010011
와 같은 이진법으로나 변환 되어야 컴퓨터가 인식한다.
이렇게 사람이 읽기 편한 고급언어
에서 컴퓨터가 익숙해 하는 low level
언어로 변환하는 것을 ✔컴파일러라고 주로 말한다.
(컴파일러 언어는 따로 존재..C, C+ JAVA등.. js와 python은 인터프리터 언어
라고 부른다.)
Babel은 js의 컴파일러이고 js은 인프리터 언어인데 어떻게 변환해주지?
Babel은 새로나온 자바스크립트 버전을 어느 브라우저에서나 사용할 수 있도록 ES5버전
으로 변환해준다.
이 과정에서 높은 버전에서 낮은 버전으로 바꿔주고, 그 낮은 버전은 브라우저가 해석할 수 있는 버전이다.
우리가 CRA로 개발할 때 아직 브라우저가 받아드리지 못하는 각종 최신 메서드들을 사용하는 경우가 많다.
하지만 CRA에서는 이미 Babel이 설정되어 있기 때문에 버전을 고려하지 않고 편리하게 사용할 수 있다.