React

[React] React에 대하여 알아보기

YaluStar 2023. 3. 27. 01:09

안녕하세요.

이번에는 React에 대하여 알아보겠습니다.

 

 

1. React JS

  • 반응형 자바스크립트
  • SPA을 전제로 하고 있으며, Dirty checking과 Virtual DOM을 활용하여 업데이트해야 하는 DOM 요소를 찾아서 해당 부분만 업데이트하기 때문에, 리렌더링이 잦은 동적인 모던 웹에서 엄청나게 빠른 퍼포먼스를 내는 게 가능하다. 기본적으로 모듈형 개발이기 때문에 생산성 또한 상당히 높은 라이브러리인지라 순식간에 대세로 떠올랐다. 거기에 기본적으로 프레임워크가 아니라 라이브러리인지라 다른 프레임워크에 간편하게 붙여서 사용하는 것도 가능하며, React Hooks라는 강력한 메서드들을 지원하면서 사실상 웹 프런트엔드 개발의 표준으로 자리 잡았다.

 

2. Virtual DOM

  • 서버와의 데이터 통신과는 별개로 DOM을 직접적으로 조작해야 하는 기존의 웹 화면 개발 방식과 달리, React는 DOM을 직접적으로 조작하지 않고 데이터가 변화할 때 변경사항이 적용된 Virtual DOM을 만든다. 그다음 실제 DOM과 Virtual DOM의 차이점을 비교하고, 변경된 부분을 실제 DOM에 적용한다.

 

3. 사용하기 - CDN 방식

 

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React - 01</title>
    <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script defer src="./index.js"></script>
</head>
<body>
    <div id="app"></div>
</body>
</html>

 

index.js

// React 따라하기

function HelloWorldButton () {
    return React.createElement("button", { onClick: () => {} }, "Hello, REACT world!");
}

const e = React.createElement;
const domContainer = document.querySelector("#app");
const root = ReactDOM.createRoot(domContainer);
root.render(e(HelloWorldButton));
  • html에서 태그를 통해 만드는 button 태그를 js 파일에서 생성하는 방법입니다.
  • 별로 중요하지는 않으니 대충 보시면 됩니다.

 

 

실행결과 - VS Code 라이브서버로 실행해야 합니다.

 

4. 연습하기 - CDN 방식

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>React - 01</title>
    <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script defer src="./index2.js"></script>
</head>
<body>
    <div id="app"></div>
</body>
</html>

 

index2.js

// React 따라하기

function HelloWorldButton () {
    const [ isClick, setClickState ] = React.useState("it isn't clicked");
    console.log(isClick);

    return React.createElement("button", { onClick: () => { setClickState("It's clicked") } }, isClick);
}

const e = React.createElement;
const domContainer = document.querySelector("#app");
const root = ReactDOM.createRoot(domContainer);
root.render(e(HelloWorldButton));

 

실행결과

처음 연습하기랑 똑같아 보이지만, 여기에는 이벤트 기능까지 추가를 해서 실행이 되는 것을 볼 수 있습니다.

 

5. JSX

  • JavaScript XML
  • React에서 사용한다.
  • HTML 문서 구조를 JS에서도 사용이 가능하며, JS 내부에서도 HTML을 짜듯 코드 구성이 가능해진다.
  • 단, Babel이라는 컴파일러가 필요하다.

 

6. Babel

  • JS의 컴파일러
  • ES6 출시 이후 브라우저에서 ES6 지원을 하지 않아서 ES6 문법과 ES5 문법의 충돌 때문에 사용하였으며, ES6 문법을 ES5 문법으로 변경해 주는 기능으로 사용하였다.
  • 브라우저의 업데이트 이후에는 추가적인 언어들에 대한 컴파일러 역하을 하게 되었으며, 대표로 React가 있다.

 

7. React 사용 규칙 (중요)

  • html 코드는 return의 ( ) 소괄호 안에 작성해 주면 됩니다.
  • JS 코드를 사용하고 싶으면 { } 중괄호 안에 작성해 주면 됩니다
  • 작성된 코드를 Babel이 컴파일러를 해주지만, 규칙이 몇 가지 필요합니다.
  • HTML의 class ⇒ className로 작성합니다. ( JS의 class와 중복이 되기 때문이다. )
  • HTML Style 설정 시 camelCase로 작성해야 합니다. ( ‘-’는 JS의 빼기와 중복이 되기 때문이다. )
    • ex) 기존 : some-Name ⇒ 변경 : someName

 

일단 기본적인 부분에 대해서만 알아보고 다음에 이어서 진행하도록 하겠습니다.

감사합니다.

 

반응형