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 |