잘 모르던, 헷갈리던 개념들을 정리해본다
1) React는 jQuery보다 빠르다
기존 DOM대신 Virtual DOM을 사용하기 때문
2) DOM vs Virtual DOM
DOM은 내용을 업데이트 할 때, 최상위 트리부터 아래까지 업데이트 해야한다
Virtual DOM은 가상 사본(스크린샷)과 업데이트 된 DOM과 비교할 수 있다(diffing)
이를 이용해 변경된 부분만 업데이트를 할 수 있음
3) jQuery는 배우기 쉽고, 사용하기 쉽다. 하지만 앱이 커질수록 DOM조작이 많아짐에 따라 더 빠른 성능을 위해 React가 유리하다
4) jQuery는 소규모 앱에서 DOM 직접 조작, 이벤트핸들링, ajax 등을 쉽게 다루기 위해 주로 사용
출처 : https://ichi.pro/ko/jquery-daesin-reactleul-sayonghaeyahaneun-iyu-235894016744379
사견) SPA 페이지를 제작함에 있어 React가 유리해보임
레이아웃 수치가 변경된다면, Reflow와 Redraw가 발생한다.
하지만, 레이아웃 수치가 변경되어야만 Redraw가 발생하는 것은 아니다. 색상관련 스타일만 변경된다면, Reflow없이 Redraw만 발생할수도 있음.
Reflow가 발생하는 상황
1) 페이지 초기 렌더링
2) 노드의 추가 혹은 제거
3) 요소의 위치 변경
4) 요소의 크기 변경
5) 폰트 변경, 이미지 크기 변경
6) 윈도우 리사이징
Reflow 최적화
1) 스타일 변경이 필요한 경우, 가장 하위 노드의 클래스를 변경한다
2) 인라인 스타일 지양
3) 애니메이션이 있는 엘리먼트는 fixed
혹은 absolute
속성을 지정한다.
=> 해당 노드를 전체 노드에서 따로 관리하기 때문에, 애니메이션 노드만 Reflow가 발생
4) <table>
레이아웃 지양
=> 조금만 변경이 생겨도, 모든 table을 다시 계산해야됨
5) CSS 표현식 지양
6) CSS 하위 선택자 최소화
=> 렌더링 트리 계산을 줄임
7) display: none
속성 활용
=> 렌더 트리를 그릴 때, 해당 속성을 가지고 있다면 제외됨
8) 캐시 활용
Reflow와 Redraw를 최대한 줄이는 것이 성능 최적화의 좋은 방법!
React에서는 Virtual DOM을 활용하여, 차이점을 파악하고 실제 DOM에서의 Reflow, Redraw는 단 한번만 발생하여, 성능의 이득을 취할 수 있다고 한다!
출처 : https://www.youtube.com/watch?v=XoyWzOh3Sy4 , https://it-eldorado.tistory.com/87
출처: https://crmrelease.tistory.com/29
forceUpdate()
실행