[번들링과 웹팩] (2) - 리액트와 웹팩

선정·2022년 7월 26일
0

Today I Learned

  • 리액트 개발에 꼭 필요한 라이브러리
  • 리액트 개발에 도움이 되는 라이브러리

리액트 개발에 꼭 필요한 라이브러리

react

React는 React 라이브러리의 진입점이다. <script> 태그를 사용하여 React를 불러오게 되면 전역 객체 React를 통하여 최상위 API를 사용할 수 있다. 리액트 컴포넌트와 Hooks, 라이프 사이클에 대한 정보가 모두 들어있다.

react-dom

react-dom 패키지는 앱의 최상위 수준에서 사용할 수 있고 필요한 경우 React 모델 외부로 나갈 수 있는 탈출구로 사용할 수 있는 DOM 관련 메서드를 제공한다. 또한, client와 server에 특화된 모듈인 react-dom/client, react-dom/server를 제공한다.

DOM 관련 메서드를 제공한다는 것을 볼 때, react-dom는 리액트 코드와 html를 연결하는 역할을 한다는 것을 알 수 있다. 이를 react-dom/client의 메서드 중 createRoot()를 통해 알아보자.

CRA를 통해 생성한 리액트 앱을 기준으로 리액트 컴포넌트와 연결되는 html 코드는 public/index.html 파일에, react-dom 라이브러리를 호출해 html 파일에 연결하는 코드는 src/index.js에 있다.

src/index.js에서 react-dom/client를 import한다. 그리고 createRoot 메서드를 호출해 container(id값으로 root를 가진 요소)에 리액트 루트를 만들어 반환하고, render를 통해 리액트 요소를 DOM으로 렌더링한다.

Babel

Babel은 자바스크립트 컴파일러이다. 리액트의 JSX 문법을 브라우저가 읽을 수 있는 JavaScript로 변환하는 역할을 하기 때문에 리액트 개발에 필수적이다.

Babel 공식 홈페이지의 try it out 메뉴를 통해 아래와 같이 jsx 코드가 babel을 통해 어떤 식으로 변환되는지 확인할 수 있다.

import React from "react"

function HelloWorld() {
  return <div>Hello World!</div>
}
import React from "react";
import { jsx as _jsx } from "react/jsx-runtime";
function HelloWorld() {
  return /*#__PURE__*/_jsx("div", {
    children: "Hello World!"
  });
}

css-loader

css-loaderimport/require()와 같은 @import, url() 구문을 해석하고 적용해 준다. 즉, 리액트 컴포넌트 파일에서 CSS 파일을 import 하여 사용할 수 있도록 하는 역할을 한다.

import ./App.css

리액트 개발에 도움이 되는 라이브러리

react-hot-reloader

react-hot-loader는 코드가 변경되었을 때 페이지를 새로고침하지 않고 바뀐 부분만 빠르게 교체해주는 라이브러리이다. 리액트의 state 또한 유지된다.

eslint

eslint는 코드를 분석해 문법적인 오류나 안티 패턴을 찾아주고 일관된 코드 스타일로 작성하도록 도와준다. eslint 역시 많은 config와 plugin이 있는데, 이를 잘 조합하면 자주 접하는 에러를 미리 발견하는데 도움이 된다.

안티 패턴
습관적으로 많이 사용하는 패턴이지만 성능, 디버깅, 유지보수, 가독성 측면에서 부정적인 영향을 줄 수 있어 지양하는 패턴이다.

prettier

prettier는 코드 포멧터(Code Formatter)로, 통일성 있게 코드 형식을 맞출 수 있게 도와주는 툴이다. eslint와 조합해서 통일된 코드 형식까지 강요할 수도 있다.

profile
starter

0개의 댓글