티스토리 뷰
create portal은 정말 도움이 될까?
create portal을 사용하는 가장 특징, 이유는 특정 컴포넌트를 부모 노드 밖에 존재하는 노드에서 랜더링하기 위함이다. 이를 통한 가장 큰 이점은 DOM 트리를 정리할 수 있다는 점이다.
DOM 트리를 왜 정리해야할까?
- 네크워크 효율성 및 성능 부하
많은 노드를 필요로 하는 DOM트리는 사용자가 페이지를 처음 로드 할 때, 필요로 하지 않는 트리까지 그려야하기 때문에 많은 데이터 비용을 필요로 하여 결과적으로 로드 시간이 증가한다. - 런타임 성능
사용자와 스크립트가 상호 작용을 할 때는 노드의 위치와 스타일을 지속적으로 계산한다. 따라서 복잡한 트리를 가지고 있으면 체크해야 하는 노드가 많아지고 이는 결과적으로 렌더링 속도의 저하가 된다. - 메모리 성능
document.querySelector과 같은 쿼리 선택기는 많은 노드에 대한 참조를 체크 및 저장하고, 이는 사용자 메모리 용량에 과도한 부하를 일으킨다.
DOM 트리는 이처럼 속도에 아주 밀접한 관계가 있다. 심지어 구글 dev tool 중 하나인 LightHouse는 body에 800개 이상의 노드가 있는 경우 경고를, 1,400개 이상의 노드가 있는 경우 오류를 발생시킨다.
DOM을 최적화 하기 위한 방법
많은 곳에서 DOM 노드를 만들고, 필요로 하지 않을 때에는 파괴하는 방식을 권하고 있다. 나는 이러한 방식 중 하나가 react의 creat portal과 js의 shadow dom이 아닐까 한다.
- create portal
https://hyermione.tistory.com/84
2. shadow dom
https://hyermione.tistory.com/88
'JavaScript > JS' 카테고리의 다른 글
onClick에 함수 혹은 화살표 함수 연결하기 (0) | 2022.07.28 |
---|---|
history web API 종류가 이렇게나 많았다. 언제 쓰는거지? (0) | 2022.07.20 |
자바스크립트 ES2022 중 일부기능만 훑어보기 (0) | 2022.07.07 |
alert/confirm/prompt와 상호작용하기 (0) | 2022.07.04 |
DOM과 virtualDom. 그리고 shadowDom인데 이제 섀도우 돔을 중심으로 (0) | 2022.06.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- sentry
- 프론트앤드
- js
- CSS
- 모바일사파리
- 리액트훅
- javascript
- 사파리
- 센트리
- 리액트
- 깃명령어
- 김민태
- 센트리모니터링
- 리액트상태관리
- reacthook
- 리코일
- npm
- 자바스크립트
- vue
- BFCache
- gitRebase
- storybookUI
- frontend
- 깃
- 프론트엔드
- TIL
- Git
- 크롬
- js테스트
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함