무한스크롤을 구현하는 여러 방법에 대해 알아보자. 풀스택 클론코딩을 모두 마무리한 후에 하나씩 시도해보고 정리해볼 계획이다.
scroll을 이용한 방법
리액트에서 작성한 코드를 가져왔다.
window.scrollY는 스크롤바에서 현재 스크롤의 위치를 나타낸다 document.documentElement.clientHeight는 현재 화면의 높이를 픽셀로 나타낸다. document.documentElement.scrollHeight은 총 스크롤의 길이를 나타낸다
script 태그를 만났을 때는 DOM 생성을 중단하고 자바스크립트가 실행되기를 기다려야한다
script 태그가 DOM 생성을 막기 때문에 js는 parser blocking이다.
인라인 스크립트 대신 외부파일로 스크립트를 사용할 경우엔 파서가 script 태그를 발견하면 파일을 받아서 실행한다. 파일을 가져오는 동안에 DOM 생성을 계속할 수 없으므로 CRP가 늦어진다.
인라인 스크립트를 사용하는 것은 요청을 줄이는 데에 도움을 주지만 코드가 반복되고 과도하게 사용될 수 있는 단점이 있다.
js는 CSS를 조작할 가능성도 있기 때문에 script는 css가 도착하고 CSSOM을 생성할 때 까지 실행되지 않는다.(CSSOM 생성 후 JS가 실행된다.) 따라서 js 최적화는 css최적화와 깊은 연관이 있다.
사용자 분석 등 랜더링에 영향을 주지 않는 스크립트
랜더링이 끝나고 브라우저가 onload 이벤트를 발생 시켰을 때 실행하여 최적화 할 수 있다.
script 태그에 async 속성(CRP를 막지 않는 script)을 통해 최적화 할 수 있다. async 속성을 붙일경우 브라우저의 DOM 생성을 막지 않는다. script 요청을 처리하고 dom을 파싱한다. 또한 CSSOM에 영향을 받지 않는다. CSSOM생성 전에 script를 사용 가능하다면 바로 실행할 수 있다.