IT/React

React. ch1. 02. DOM에 대한 이해

체계성 2021. 10. 9. 10:58

 DOM

 Document Object Model

 문서를 논리 트리로 표현한다.

 MDN - Web 개발에 필요한 표준 정의

 (https://developer.mozilla.org/ko/docs/Web/API/Document_Object_Model)

 

 element는 보여지는 요소(출력된 글자, 버튼 등)

 DOM은 컴퓨터가 이해하는 element의 원형이다.

 

순수 자바스크립트 ( = Vanilla Js)

 - 특정 플러그인, 라이브러리, 프레임워크를 사용하지 않은 그 자체의 자바스크립트

 - (https://www.w3schools.com/)

 

○ 샌드박스 

 CodeSandBox.io - 코드를 실행해보고 테스트하는 사이트 (계정 만들자)

 static(HTML 기본 파일) 클릭 > 기본 자바스크립트 작업을 웹에서 실행

 

○ CDN

 - 웹에서 사용되는 다양한 컨텐츠(리소스)를 저장하여 제공하는 시스템

 - React 라이브러리를 html 문서에 주입해서 사용해보자.

   구글링 react document cdn > 아래 두 줄 복사 후 사용할 html에 붙여넣기 > 바로 react 사용 가능

[개발용]
<script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"></script>
<script crossorigin src="..."></script> : CrossOrigin 속성 추가 권장 

[배포용]
<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script> 
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

 

 

○ 코드

<!DOCTYPE html>
<html lang="en">
  <body>
    <!-- 리액트를 사용하기 위한 CDN -->
    <script crossorigin src="https://unpkg.com/react@17/umd/react.development.js"
    ></script>
    <script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.development.js"
    ></script>

    <div id="root1"></div>
    <div id="root2"></div>
    
    <script>
      // 일반적인 자바스크립트 코드
      const rootElement1 = document.getElementById("root1");
      const element1 = document.createElement("h1");
      element1.textContent = "hello";
      rootElement1.appendChild(element1);
      console.log(element1); // <h1>hello</h1>

      // 리액트 코드
      const rootElement2 = document.getElementById("root2");
      //const element2 = React.createElement("h1", { children: "hello2" });
      const element2 = React.createElement("h1", null, "hello2"); // 위와 동일
      ReactDOM.render(element2, rootElement2);
      console.log(element2); // <h1></h1>
    </script>
  </body>
</html>