<aside> ♻️ Next.js는 서버사이드에서 페이지를 사전 렌더링 해 준다!!!
</aside>
실제로 유저가 데이터가 로딩되기까지를 기다려야한다.
실제 백엔드 API를 이용해서 데이터를 페칭하는 실제 페이지에서는 데이터 로딩에 몇초가 소요될 수 있다. (지연이 발생) → 사용자 경험의 최적화라 말할 수 없다. 🥲
검색 엔진 최적화에 문제
검색 엔진이 있는 앱의 경우 나의 컨텐츠를 google이 알아야하는데, 지금 보이는 HTML코드는 백엔드에서 받아온 데이터가 전혀 없는 문서를 검색 엔진이 보게 된다.
<div id='root'></div>
콘텐츠가 중요하여, 검색엔진이 컨텐츠를 열람하고 인덱싱하게 하려면 기존 react의 데이터를 fetching하고 나서 페이지를 그리는 방식은 적합하지 않다.
하지만 서비스 성격에따라 다르다.. 로그인을 해야하는 웹, 앱 like 관리자 페이지,에서는 next.js를 안써도된다,
블로그나, 쇼핑몰 처럼 많은 콘텐츠가 있는 앱의 경우! 우리의 콘텐츠가 검색엔진의 search를 받아야하는데 빈 페이지면 안좋지!
<aside> ♻️ 기존 react의 문제점 : 데이터 페칭이 컴포넌트가 로딩된 후 여야한다.
</aside>
어떤 유저가 /some-route라는 페이지에 요청을 하게 되면 === 사용자가 /some-route라는 페이지에 방문하게 되면, Next.js가 사전 렌더링된 페이지를 반환한다.
Next.js는 페이지와 필요할 법한 모든 데이터가 있는 HTML 콘텐츠를 사전에 렌더링한다. → SEO 증진!
사전 렌더링된 페이지를 재전송 하는 것 뿐만 아니라, 포함된 모든 JS 코드도 보낸다. (hydrate) react 실행
정리 :
<aside> ♻️ 사전 렌더링되는 것은 최초 접속하는 첫 번째 페이지
</aside>
두가지 pre-render방식이 있다. 언제 어떤걸 사용할지는 개발자의 몫