HTML의 DOM과 JavaScript의 관계 & React의 탄생

2023. 3. 5. 02:40·FE/React

  1. DOM(document object model) 문서객체모델

- 웹페이지(HTML, XML)의 콘텐츠 및 구조, 스타일 요소를 구조화시켜 프로그래밍 언어가 해당 문서에 접근하고 읽고 조작할 수 있도록 API를 제공하는 일종의 인터페이스(의사소통 매개체)이다.

- 웹페이지(HTML문서)를 계층적 구조와 정보로 표현하며 이를 제어할 수 있는 property와 method를 제공하는 트리 자료구조

-> 최상위 노드(root)에서 시작해 자식 노드를 가진다

 

출처-위키백과

▶ Document node(root)
-  최상위 루트노드로 window객체의 document 프로퍼티로 바인딩되어있다. 문서에 하나만 존재한다.
▶ Element node
- html, head, body, meta, title, div, h2 ...
- 속성을 가질 수 있는 노드로 부모-자식 관계를 가지는 계층구조를 이룬다.
▶ Attribute node
- 노드에 대한 요소 정보를 가지는 노드이다. 부모-자식 관계가 아닌 해당 노드와 바인딩되어 있는 구조이다.
▶ text node
- 노드의 정보를 표현하는 가장 마지막에 위치하는 자식 노드 (리프노드)
- <h1> 태그 안에 들어가는 텍스트가 text node </h1>

DOM - JavaScript

📌 웹 브라우저에 기본적으로 내장되어 있는 자바스크립트로 (selector API 사용) DOM의 노드를 제어해 동적인 기능을 줄 수 있다.

※ DOM은 js만으로 구현되는 것이 아니지만 js의 아성을 이길 수 있는 언어가 없다. 

📌 HTML문서에 없는 노드를 만들고 이어 붙여 웹 페이지에 렌더링 하는 과정이 동적으로 구현되는 것이다.

 

DOM 객체 구성요소

  • 프로퍼티(property) : DOM 객체의 멤버 변수로  HTML 태그의 속성을 반영한다.
  • 메서드(method) : DOM 객체의 멤버 함수로  HTML 태그를 제어한다.
  • 컬렉션(collection) : 정보를 집합적으로 표현하는 일종의 배열이다. 예) children 컬렉션은 DOM 객체의 모든 자식 DOM 객체에 대한 주소를 가진다.
  • 이벤트 리스너(event listener) : HTML 태그에 작성된 이벤트 리스너(onclick, onchange 등)들을 그대로 가진다.
  • 스타일(style) : 이 프로퍼티를 통해 HTML 태그에 적용된 CSS 스타일 시트에 접근이 가능하다.

 

  2. 리액트의 탄생

📌 배경 

  • dom을 직접 건드리는 작업은 번거롭다.
  • 사용자와 인터렉션이 많아질수록 동적인 UI를 표현하려면 코드가 복잡해지며 관리하기 어려움

📌 react 발상

  • 어떠한 상태가 바뀌었을 때, 처음부터 DOM을 초기화하고 새로 만들어서 보여주자는 아이디어에서 시작

📌 문제점

  • 매번 이렇게 하게 되면 다양한 문제가 발생

📌 해결

  • 메모리에 가상 DOM을 만든다.(속도와 성능 문제 해결)
  • 업데이트가 필요한 부분만 가상 DOM으로 수정한다.
  • 그 이후 REACT의 알고리즘을 통해 다른 부분을 감지하여 실제 브라우저의 DOM에 패치시켜준다.

'FE > React' 카테고리의 다른 글

React Context API 사용법 및 Props와 Context차이점  (0) 2023.03.16
리액트로 라우터 생성하기 (react-router-dom & qs 라이브러리)  (0) 2023.03.09
React - 카카오 API를 이용한 도서검색 (axios라이브러리, async, await)  (0) 2023.03.06
React 리액트 기초 (jsx파일, 컴포넌트, 함수 자동완성 라이브러리 ES7+)  (0) 2023.02.27
React란? cmd 리액트 설치 및 실행 (VScode) - yarn  (0) 2023.02.27
'FE/React' 카테고리의 다른 글
  • 리액트로 라우터 생성하기 (react-router-dom & qs 라이브러리)
  • React - 카카오 API를 이용한 도서검색 (axios라이브러리, async, await)
  • React 리액트 기초 (jsx파일, 컴포넌트, 함수 자동완성 라이브러리 ES7+)
  • React란? cmd 리액트 설치 및 실행 (VScode) - yarn
시녜's
시녜's
성장중인 새싹 개발자 🌱
  • 시녜's
    개발기록
    시녜's
  • 전체
    오늘
    어제
    • 분류 전체보기
      • FE
        • React
        • javascript(jQuery)
        • HTML & CSS
      • BE
        • Java [Servlet , Spring]
        • C & C++
        • Node.js
        • node.js
        • SQL (Oracle, mysql)
      • CS
        • 프로그래밍 이론(정보처리기사)
      • Etc
        • 코딩 챌린지
        • 개발 성장 일지
        • 코딩테스트
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    코딩테스트
    mysql
    코딩입문
    자바스크립트
    프로그래밍
    자바조건문
    리액트
    javascript
    백준브론즈
    jsp
    자바반복문
    스프링
    제이쿼리
    코딩기초
    jquery
    html
    자바문자열
    코테기초
    React
    CharAt함수
    Java
    백준
    백준단계별문제
    백준코딩테스트
    코딩테스트입문
    코테
    자바배열
    자바기초
    백준문제풀이
    자바
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
시녜's
HTML의 DOM과 JavaScript의 관계 & React의 탄생
상단으로

티스토리툴바