바벨과 웹팩, Vite의 역할: 리액트 개발에서의 필수 도구 이해하기

2024. 7. 23. 21:55·웹개발/REACT
728x90

바벨의 유래

바벨(babel)이라는 이름은 고대 '바벨탑' 이야기에서 유래되었어. 이 이야기에서는 전 세계 사람들이 모여서 세상에서 가장 높은 '바벨탑'을 만들려고 했지만, 언어가 달라서 탑을 완성하지 못했지. 프런트엔드 개발에서도 바벨은 서로 다른 언어 규약으로 작성된 파일을 웹 브라우저가 이해할 수 있는 형태로 변환해주는 역할을 해.

 

자바스크립트 생태계의 큰 변화, ES6 등장

자바스크립트는 2009년에 ES5가 출시된 이후로 6년 동안 큰 변화가 없었어. 그러다가 2015년에 ES6(2015)가 등장하면서 자바스크립트 생태계에 큰 변화가 일어났지. ES6는 기존 ES5와 확연히 다른 점이 많아서 새로운 자바스크립트 언어라고 해도 과언이 아니야.

 

브라우저가 지원을 안하네

하지만, ES6가 아무리 훌륭해도 웹 브라우저가 이를 지원하지 않으면 사용할 수 없었어. 당시 IE(Internet Explorer)가 많이 사용되던 시기여서 브라우저별로 ES6 지원이 제각각이었지.

 

6to5

바벨의 원래 이름은 6to5였어. ES6로 작성된 코드를 ES5로 변환해주는 툴이었지. 이를 통해 개발자들은 브라우저 호환성 문제를 해결하면서 ES6를 사용할 수 있었어. 후에 6to5는 바벨(Babel)이라는 이름으로 재탄생하게 돼.

 

바벨

리액트에서도 당연히 바벨을 사용해. 바벨을 사용해서 리액트의 독자 코드 포맷인 JSX로 작성된 코드를 JS로 변환해줘. 바벨 덕분에 리액트에서 JSX를 사용할 수 있는 거야.

더보기

<aside> ⛔ 바벨은 파싱(parsing) → 변환(transformation) → 출력(print)의 세 단계에 걸쳐서 코드를 변환해. 파싱은 코드를 읽어서 AST(추상 구문 트리)로 변환하고, 변환 단계에서는 이 AST를 정해진 규칙에 따라 변환해. 마지막으로 변환된 AST를 다시 소스코드로 출력하지. </aside>

 

잠깐, 그럼 웹팩은? 새로나온 마스크팩인가요?

웹팩(Webpack)

웹팩이라는 단어도 많이 들리는데, 웹팩과 바벨은 다른 역할을 해. 웹팩을 가장 잘 설명하는 그림이 웹팩 공식 홈페이지에 있어.

웹팩은 모듈 번들러야

쉽게 말하면, 여러 개의 자바스크립트 모듈(자바스크립트의 기능을 여러 개로 분리하여 작성한 코드)을 하나의 파일로 묶어주는 역할을 해. 이때 실제 코드에서 '사용하는 것만' 자동으로 추려서 묶어주기 때문에 빌드 속도와 성능에 큰 영향을 줘.

 

Vite

웹팩이 1세대 번들러라면, Vite는 2세대 번들러 도구야. 웹팩보다 더 빠른 속도를 자랑하고, 리액트와도 궁합이 좋아서 최근에 가장 많이 사용하는 번들러 도구야.

 

리액트는 바벨과 웹팩(Vite)을 함께 사용

리액트 프로젝트를 개발할 때 여러 개의 에셋 파일, JSX, ES6 문법 등을 사용해. 웹팩을 사용해서 모듈 번들링을 하고, ES6로 작성된 코드를 바벨로 변환해주면 어떤 환경에서도 문제 없이 동작하는 일관된 코드를 작성할 수 있어.


이제 바벨과 웹팩의 역할과 중요성을 알게 되었지? 리액트를 사용할 때 왜 이 두 가지 도구가 필수적인지 이해할 수 있을 거야.

728x90

'웹개발 > REACT' 카테고리의 다른 글

리액트 컴포넌트, 아직도 클래스형 쓰는 사람? 이 글 읽고 손절하자!  (3) 2024.07.24
리액트 확장자명 헷갈리면 들어와! / .js, .jsx, .tsx  (0) 2024.07.24
돔(DOM)과 가상돔(Virtual DOM)  (0) 2024.07.23
React 리액트 왜 사용할까?  (0) 2024.07.23
NPM, NPX, YARN, 쉽게 이해해보자!  (0) 2024.07.23
'웹개발/REACT' 카테고리의 다른 글
  • 리액트 컴포넌트, 아직도 클래스형 쓰는 사람? 이 글 읽고 손절하자!
  • 리액트 확장자명 헷갈리면 들어와! / .js, .jsx, .tsx
  • 돔(DOM)과 가상돔(Virtual DOM)
  • React 리액트 왜 사용할까?
튼튼발자
튼튼발자
프론트엔드 개발자입니다. 헬스를 가끔해서인지 몸이 튼튼한거 같습니다. 그래서 튼튼한 개발자 => 튼튼발자입니다. 프론트엔드 및 관련 개발 내용 블로그 글로 정리해서 올려둡니다.
    250x250
  • 튼튼발자
    튼튼발자
    튼튼발자
  • 전체
    오늘
    어제
    • 분류 전체보기 (192)
      • 튼튼발자의 끄적끄적 (10)
      • 웹개발 (94)
        • HTML (5)
        • CSS (2)
        • JavaScript (40)
        • TypeScript (5)
        • REACT (22)
        • Next.js (13)
        • GIt (7)
      • 기타 (3)
        • 일상 (3)
      • 프로젝트 (27)
        • Componique: UI 컴포넌트 라이브러리 (18)
        • GitHub Profile Viewer (8)
        • 잇핏 (1)
      • 프론트엔드 개발자로 취업준비 (1)
        • 기술 면접 (7)
        • 코딩 테스트 준비하기 (0)
        • 자기소개서&지원서&이력서 (0)
      • 컴퓨터과학 (12)
        • 운영체제 (6)
        • 알고리즘 (6)
      • 전공 공부 (37)
        • AI(인공지능) (2)
        • 컴퓨터네트워크 (19)
        • 네트워크프로그래밍 (3)
        • SW소프트웨어응용설계 (7)
        • 클라우드컴퓨팅 (3)
        • 웹서비스프로그래밍 (3)
      • PT (0)
      • 취준일기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ui컴포넌트
    리액트
    프로그래밍
    자바스크립트
    코딩
    데이터전송
    트랜스포트계층
    react
    웹개발
    componique
    NextJs
    프론트엔드개발
    TCP
    github
    상태관리
    tailwind
    네트워크
    프론트엔드
    JS
    JavaScript
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
튼튼발자
바벨과 웹팩, Vite의 역할: 리액트 개발에서의 필수 도구 이해하기
상단으로

티스토리툴바