npm 트렌드를 확인할 수 있는 사이트

최근 5년간 react, svelte, vue 사용량 비교
npm 트렌드 사이트 확인 결과 리액트가 Vue, Svelte 등 다른 프레임워크보다 훨씬 많은 사용자 기반 보유 중

크리티컬 렌더링 패스:브라우저가 HTML, CSS, JS 파일을 처리하여 웹페이지를 화면에 렌더링하는 과정
🚨: 계산 비용이 많이 드는 작업
⇒ 성능에 큰 영향을 줌
✅ 크리티컬 렌더링 패스 과정은 DOM이 업데이트될 때마다 반복적으로 발생
JS를 이용해서 DOM을 수정할 때마다 업데이트가 발생


width, height 변경 시 발생)추가) GPU가 관여할 수 있는 속성은 리플로우와 리페인트가 생략됨
💡 성능 최적화: 리플로우와 리페인트를 줄이면 웹페이지의 성능이 향상됨
즉, DOM 업데이트를 한꺼번에 모아서 처리하면 DOM 수정 횟수를 최소화할 수 있음
코드예제
<body>
<button onclick="render()">추가</button>
<ul></ul>
<script>
//❌ DOM에 li를 추가할 때마다 리플로우와 리페인팅 작업이 일어나게 됨
function render() {
const ulEl = document.querySelector('ul');
for (let i = 0; i < 300; i++) {
ulEl.innerHTML += `<li>${i}</li>`;
}
}
//✅ 렌더링 성능 향상(ver)
//리플로우 최소화
function render2() {
const ulEl = document.querySelector('ul');
let liEls = "";
for (let i = 0; i < 300; i++) {
liEls += `<li>${i}</li>`;
}
ulEl.innerHTML = liEls; //변수로 모아뒀다가 한 번에 변경
}
</script>
</body>
하지만 서비스 규모가 커지면 모든 업데이트를 하나하나 관리하기가 어려움 😵💫
👍 리액트에서는 이 코드적인 개선 과정을 생각하지 않아도 자동으로 처리해줌
리액트는 가상 DOM을 사용해 DOM 조작을 효율적으로 관리함
실제 돔과 같은 내용을 담고 있는 복사본. 객체 형태로 메모리 안에 저장되어 있음.
실제 DOM 조작은 비용이 크기 때문에, 가상 DOM을 활용해 변경사항을 미리 계산한 후 모아서 한 번만 실제 DOM을 수정하도록 함. 이 과정을 재조정(Reconciliation)이라고 부름
🤔 그럼 이 가상 돔을 사용하면 항상 빠른 속도를 보장하는가?
⇒ ❌ 아닐수도 있음. 가상 돔을 생성하고 비교하는데도 연산이 소요되기 때문