FE/Next.js
[ Next.js ] 사전 렌더링 이해하기
HUIcode
2025. 1. 26. 04:02
세감 서비스에서 Next.js14를 사용하기 때문에 Nextjs 공부를 진행하려 한다.
감자 탈출기 On ...
인프런에서 이정환 님의 <한 입 크기로 잘라먹는 Next.js(v15) 강의를 결제했다!
2024년 8월 기준으로 제작된 강의다!
Next.js란?
: React.js 전용 웹 개발 프레임워크(라이브러리X)로 react.js보다 더 강력하고 편하게 사용할 수 있는 기능들을 제공한다. 예를 들어, 페이지 라우팅, 빌트인 최적화 기능, 다이나믹 HTML 스트리밍 등의 기능이 추가되었다.
: 리엑트에 비해 자유도는 낮지만 그만큼 웹개발에 있어 필요한 거의 모든 기능들을 제공한다.
렌더링
1. JS 실행 : 자바스크립트 코드(React 컴포넌트)를 HTML로 변환하는 과정을 의미
2. 화면에 렌더링 : HTML 코드를 브라우저가 화면에 그려내는 작업을 의미
사전 렌더링(Pre Rendering)
: 브라우저의 요청에 사전에 렌더링이 완료된 HTML을 응답하는 렌더링 방식 / CSR(Client Side Rendering)의 단점을 효율적으로 해결하는 기술
*CSR = react.js의 기본적인 렌더링 방식으로 클라이언트(브라우저)에서 직접 화면을 렌더링 하는 방식이다.
Pre-rendering | CSR(Client Side Rendering) | |
렌더링 과정 | 유저가 브라우저(클라이언트)를 통해 서버로 초기 접속 요청을 보내면, 서버는 js로 작성된 모든 react 컴포넌트들을 html로 변환(렌더링) 후 렌더링 된 HTML을 브라우저에 응답함.(화면 보임!) 이후 클릭이나 페이지 이동 등의 인터렉션(상호작용)이 작동하도록 하기 위해 서버에서 JS Bundle을 브라우저로 보내고 브라우저는 JS를 실행시킨다(html과 연결). 이 작업을 Hydration이라 하고 상호작용까지 가능해진 이 시점을 TTI(Time To Interactive)라 한다. 페이지의 이동은 CSR 방식으로 처리된다. (유저에서 브라우저로 페이지 이동 요청 -> 브라우저에서 js 실행(컴포넌트 교체) -> 브라우저에서 유저로 페이지 교체) |
유저가 브라우저(클라이언트)를 통해 서버로 초기 접속 요청을 보내면, 서버는 빈껍데기 파일인 index.html을 브라우저로 보내고 브라우저는 유저에게 빈 화면을 렌더링 시킨다. 그리고 서버는 js 코드들을 하나의 js 파일로 묶어서 (JS Bundling) 후속으로 브라우저에 보내고, 브라우저는 JS를 실행해 컨텐츠를 렌더링 해 유저로 보낸다. |
장점 | 기존 React App의 초기 접속 속도가 느리다는 단점을 해결해 빠른 FCP를 달성했고 페이지 이동에는 React App의 장점을 승계해 빠른 페이지 이동이 가능하다. | 초기 접속 이후 페이지 이동이 매우 빠르고 쾌적함 - JS Bundle에 서비스에서 접근 가능한 모든 컴포넌트 코드가 존재하기 때문에 새로운 페이지를 요청할 필요가 없음. 유저에게서 페이지 이동 요청이 오면 브라우저에서 js를 실행시켜 컨텐츠를 렌더링 해 유저에게로 보낸다. |
단점 | 제약 사항 : 콘턴체가 자주 변경되는 경우 실시간 업데이트의 어려움이 있을 수 있음. | 초기 접속 속도가 느리다 (치명적 단점) - 요청의 시작 시점부터 브라우저가 화면에 컨텐츠가 처음 나타나는데 걸리는 시간(FCP : First Contentful Paint)이 렌더링 과정을 보면 오래 걸릴 수 밖에. |
=> 사전 렌더링과 클라이언트 사이드 렌더링 비교
https://digitalbourgeois.tistory.com/382 << CSR vs SSR vs Pre-rendering 비교 블로그로 잘 정리되어 있어서 참고하면 좋을듯하답!