← Back to list

순수 React를 babel을 통해 JSX문법 사용하기

CRA없이 순수 React로 개발해보고 Babel을 통해 JSX문법을 사용하기

두콩 · 2021-09-14 08:00 · 0 claps · 3.4 min read
#react #babel #compile #jsx
Open on Medium ↗
Wiki topics: 🌐 · Web Development

React에서 babel 사용해보기

CRA가 아닌 순수 React에서 JSX 사용하기

React 개발 팀에서 원활한 개발 환경을 제공 하기 위해 ‘cra’를 제공하는데요.

리액트 프로젝트를 시작할 때 항상 creat-react-app을 설치하셨을 겁니다.

cra에서는 많은 기능을 제공하지만 babel(ES6를 ES5로 변환하는 역할을 함)을 통해 JSX문법을 사용합니다.

babel이 없다면?

JSX 문법을 사용하지 못하게됩니다.

자 먼저 babel 없이

순수 React

로만 카운트 버튼으로 숫자를 증가시키는 프로그램을 만들어보겠습니다.

<html>

<script>

JSX 문법을 사용하지않는 React는 참 복잡합니다.

<button> 태그로 버튼을 생성하고 <div>로 그리드를 구성하고 <p>, <h2>등을 활용해 글자 텍스트를 생성하는 방법과는 많이 달라보이네요

직접 React와 ReactDOM을 활용해야하니 여간 번거로운게 아닙니다.

하지만 babel을 활용해 JSX문법을 사용하면 얘기가 달라집니다.

JSX 문법을 활용

어떤가요?

훨씬 더 간결하죠.

하지만 이 상태에서 바로 실행하게되면 SyntaxError를 만나게 될겁니다.

이렇게요..

너무 당연하게도 JSX문법은 Javascript 표준이 아니기 때문에 Browser에서 실행하면 당연히 에러를 만나게됩니다.

에러를 해결하기위해 babel를 이용해서

JSX문법을

creatElement코드로 변환해볼겁니다.

babel 설치

  • package.json

npm으로 패키지를 관리할 때는 package.json파일이 필요함

npm init -y

package.json 파일 생성 완료

  • babel 설치

npm install @babel/core @babel/cli @babel/preset-react

  • @babel/core 는 바벨의 핵심 기능을 가지고 있는 패키지
  • @babel/cli는 cli에서 사용할 바이너리가 들어있음
  • @babel/preset-react는 리액트를 위한 플러그인 여러개를 모아놓은 것

** babel은 프리셋(여러 플러그인)과 플러그인(하나의 변환하는 기능) 개념

  • 기존 파일을 컴파일해서 변환

이 코드는 컴파일 할 때마다 자동으로 변경을 해준다.

다음과 같은 디렉토리 구조에서 src 밑에 있는 simple1.js를 simple1.html 밑에 있는 simple1.js로 컴파일 한 것임.

변환 완료

다음과같이 변환이 된 것을 볼 수 있으며, 에러가 없어지고 잘 실행이 됐죠!?

NPX 에 대해서 잠깐 짚고 넘어가보죠.

  • npx babel

.bin 폴더에 있는 babel 바이너리 파일을 실행해주는데, babel이 설치되지 않았다면 설치를 진행해주는 편리 기능이다


메타데이터
post_id
d579dbd3aa0a
slug
순수-react를-babel을-통해-jsx문법-사용하기-d579dbd3aa0a
url
https://medium.com/@hanxbeen/%EC%88%9C%EC%88%98-react%EB%A5%BC-babel%EC%9D%84-%ED%86%B5%ED%95%B4-jsx%EB%AC%B8%EB%B2%95-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-d579dbd3aa0a
canonical_url
https://medium.com/@hanxbeen/%EC%88%9C%EC%88%98-react%EB%A5%BC-babel%EC%9D%84-%ED%86%B5%ED%95%B4-jsx%EB%AC%B8%EB%B2%95-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-d579dbd3aa0a
author_url
https://medium.com/@hanxbeen
status
ok
fetched_at
2026-07-28 00:11:24