리액트 톺아보기
리액트가 필요했던 이유
2013년도 공식 블로그를 보면 리액트가 왜 필요했는지 나옴.
리액트의 특징
브라우저의 렌더링 과정
Render Tree - 웹페이지의 청사진
Layout - 화면에 나타날 요소들의 위치와 크기를 지정
Paint - 실제 요소를 화면에 구현
1. 불러오기
: 로더(Loader)가 서버로부터 전달받은 리소스 스트림을 읽는 과정
2. DOM, CSSOM 생성
웹 엔진의 HTML/XML 파서가 문서를 파싱해 DOM Tree를, CSS 파서가 CSSOM 트리를 생성(아래 파싱, 스크립트와 스타일 시트의 진행순서 참조)
3. 생성된 DOM과 CSSOM으로 렌더링 트리 생성
DOM Tree + CSSOM Tree, 렌더링에 필효한 노드만 선택해 페이지를 렌더링하는데 사용
4. css, 레이아웃
: 렌더트리를 토대로 그려질 노드와 스타일, 크기를 계산
렌더링 트리에서 위치, 크기등을 알 수 없기 때문에 객체들에게 위치 크기 등을 정해주는 과정, css는 선택자에 따라서 적용되는 태그가 다르기 때문에 모든 css 스타일을 분석해 태그에 스타일 규칙이 적용되게 결정
5. 그리기
: 렌더트리의 각 노드를 실제 픽셀로 변환 ➡️ 실제로 그리는 작업을 실행
*JS로 DOM, CSSOM을 변경하는 경우 리렌더링
잦은 리플로우/리페인트는 성능 저하의 주범이다.
https://velog.io/@zaman17/기술면접대비-브라우저-렌더링-순서와-원리
→ 변경 사항을 모아서 한 번의 DOM 수정 요청을 해야. - 리액트의 Virtual DOM이 그 역할을 함.
⇒ 대부분의 상황에 충분히 빠른 업데이트를 보장함.
리액트의 Reconciliation
- virtual DOM은 어떻게 만들어지고 어떻게 생겼을까
- 2개의 virtual DOM을 비교?
createElement - React Element 객체를 반환하는 함수
React Element들은 virtual DOM의 하나의 node가 된다.
virtual DOM - React 컴포넌트 함수들의 모임
React Element를 까보면,
property중에 type - 컴포넌트