[Frontend]모듈 번들러와 트랜스파일러

배주영·2022년 1월 31일
0

CS_study

목록 보기
1/3

모듈 번들러와 트랜스파일러


📂 모듈 번들러(Module Bundler)


모듈 번들러란 웹 애플리케이션을 구성하는 자원(HTML, CSS, JS, Image 등)을 모두 각각의 모듈로 보고, 이를 조합해서 병합된 하나의 결과물을 만드는 도구.

Module

여러 기능들에 관한 코드가 모여있는 하나의 파일.
사칙연산을 하는 계산기를 예로 들면 사칙연산 4가지 기능을 계산기라는 파일로 관리하는 하나의 모듈이라고 볼 수 있다.

모듈 번들러를 쓰는 이유

현대의 프론트엔드 개발은 모듈 단위로 파일을 엮어서 개발하는 방식이기 때문에 모듈이 서로 의존성을 띄고 있어 다음과 같은 문제가 생긴다.

  • 수많은 모듈들의 순서를 어떻게 처리할 것인가? (의존성 처리)
  • 모듈이 많아질수록 HTTP 요청이 많아질텐데 이로 인한 오버헤드는 어떻게 해결할 것인가?
  • ES6+ 스펙의 코드를 어떻게 처리할 것인가?

위 문제들을 해결하기 위해 등장한 것이 모듈 번들러로 유명한 번들러로는 Webpack, Parcel, Rollup 등이 있다.

🔧 트랜스파일러(Transpiler)


트랜스파일링(Transpiling)

트랜스파일링이란 특정 언어로 작성된 코드를 비슷한 다른 언어로 변환시키는 행위를 말하며, 이를 위한 도구가 트랜스파일러이다.

트랜스파일러를 쓰는 이유

모든 브라우저가 ES6+의 기능을 제공하지는 않기 때문에 이를 ES5 코드로 변환시키는 과정이 필요하고, 트랜스파일러가 이 작업을 수행해준다. 사실 ES6+의 기능 뿐만 아니라 리액트의 JSX를 자바스크립트 코드로 변환시킨다거나 타입스크립트를 자바스크립트로 변환시키는 등의 역할도 트랜스파일러의 기능 중에 하나이다.

ES6+나 JSX를 변환시키는 바벨(Babel), 타입스크립트를 변환시키는 타입스크립트 트랜스파일러(Typescript Transpiler) 등의 트랜스파일러가 있다. 보통 프론트엔드 프레임워크 및 라이브러리를 사용해서 개발할 때 모듈 번들러에 트랜스파일러를 추가해서 사용하는 방식을 사용한다.

transpile vs compile

compile

한 언어로 작성된 소스 코드를 다른 언어로 변환하는 것을 의미

  • Java -> bytecode
  • c => assembly

transpile

한 언어로 작성된 소스 코드를 비슷한 수준의 추상화를 가진 다른 언어로 변환하는 것을 의미

  • es6 코드 -> es5 코드
  • c++ -> c
  • typescript -> javascript

참고 사이트

https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/frontend/bundler-transpiler.md

https://velog.io/@cjh951114/%EC%A7%81%EB%AC%B4-%EA%B4%80%EB%A0%A8-%EC%A7%88%EB%AC%B8-02.-%EC%9B%B9%ED%8C%A9%EC%9D%B4%EB%9E%80-%EB%AA%A8%EB%93%88-%EB%B2%88%EB%93%A4%EB%9F%AC%EA%B0%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80%EC%9A%94

https://ideveloper2.tistory.com/166

0개의 댓글