티스토리 뷰
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
리액트 create portal 이란 무엇인가. 이제 여기에 모달 예제를 곁들여보자. 토스트 메세지도 가능하
TMI. 자꾸 날리는 바람에 이 주제 관련 포스팅만 몇 번째 쓰는지 모르겠다 ㅠㅠ 리액트 공식 홈페이지에서는 create Potals를 다음과 같이 설명하고 있다. Portals provide a first-class way to render children..
hyermione.tistory.com
2. shadow dom
https://hyermione.tistory.com/88
DOM과 virtualDom. 그리고 shadowDom인데 이제 섀도우 돔을 중심으로
며칠 전, 전 직장 사수와 이야기 하다가 나온 개념. 미래에 어떻게 될 지 모르겠지만 Shadow Dom이 뜰 수도 있고, 이대로 가라앉을수도 있고. 아니 무슨 말이 이렇게 애매모호해? 그리고 shadow Dom이
hyermione.tistory.com
'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
- 리코일
- BFCache
- npm
- 사파리
- sentry
- javascript
- 프론트엔드
- TIL
- react
- vue
- reacthook
- 프론트앤드
- 센트리
- 크롬
- Git
- 자바스크립트
- 김민태
- gitRebase
- 리액트
- CSS
- storybookUI
- 깃
- 리액트상태관리
- 리액트훅
- 깃명령어
- 모바일사파리
- 센트리모니터링
- js테스트
- frontend
- js
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |