git remote add origin https://github.com/devgsheep/til_next.git
- React.js 를 더 편하게 사용할 수 있는 기능을 미리 제공
- Next.js는
웹 개발 프레임워크
이다. (프레임워크는 미리 기능을 만들어서 제공함.) - React.js 는 그냥 js 라이브러리이다.
- 기능 구현의 주도권을 개발자가 가짐 : 라이브러리
- 기능 구현의 주도권이 개발자에게 제한적이다. : 프레임워크
- 오해하면 안됩니다. (개발 주도권이 개발자에게 있는 것이 좋지 않습니다.)
- 쓰고 싶은 기능을 개발자가 선택하는 자유가 있음.
- 개발의 결과물에 대해서 유지, 보수가 개발자에게 한정됨.
- 대규모 프로젝트에서는 라이브러리 선택에 따라서 개발 진행 변경됨.
컨벤션 유지가 어렵다.
- Next.js 즉 프레임워크는 자유도가 낮다.
- 자유도가 낮은 대신에 거의 모든 기능을 기본적으로 제공한다.
- 복잡한 기능을 기본적으로 제공해주므로 많은 부분이 해결되어져 있다.
- React.js 에 추가적인 기능을 보완했으므로 상당히 이해하기 수월하다.
- 면접볼때 왜 Next.js 쓰는지 물어볼때 1순위로 추천
- 사전 렌더링이란
- 웹 브라우저의 요청에 Server에서 미리 렌더링 완료한 HTML을 응답으로 제공함.
- React.js 는 CSR(Client Side Rendering)으로 렌더링, 즉 화면에 HTML 출력 느림
- Next.js 는 사용자 요청이 들어오면 서버에서 컴포넌트들을 렌더링하고 그 결과물을 응답해줌.
SEO 에 최적화됨
으로 인해서 검색노출에 유리함.
- js로 html을 즉시 생성하는 방식
- 리액트의 기본적인 렌더링 방식(Client Side Rendering)
- 랜더링 단계
- 1단계 : 사용자 > 웹브라우저 요청 > 서버에서
빈 껍데기 HTML
응답 > 웹 브라우저 출력 > 사용자 - 2단계 : 다시 서버에서 js 압축파일(JS Bundle) > 웹 브라우저 응답
- 3단계 : 웹브라우저 JS Bundle 실행 > 웹브라우저 HTML 출력 > 사용자
- 1단계 : 사용자 > 웹브라우저 요청 > 서버에서
- 장점
- 페이지 이동이 상당히 빠르다는 장점
- 초기 접속 후 라우터 이동은 상당히 빠르다는 장점
- 서버에서 응답하는 JS Bundle에 모든 기능관련 코드를 내려 받았으므로
- 단점
치명적으로 초기 렌더링이 느리다
는 단점.- 접속 이후에 첫화면을 렌더링할때까지 시간이 많이 걸림
FCP(First Contentful Paint)
가 느리다. (요청 후 첫 렌더링 되는 시간)- FCP가 10초 이상이면 이탈율이 150% 이상임.
- Server Side Rendering 의 줄임말
- Next.js 의 특징으로 CSR의 단점을 보완함.
- 렌더링 단계
- 사용자 > 웹 브라우저 요청 > 서버에서 JS 번들을 실행 > HTML 생성 > 웹 브라우저 응답
- SSR 에서의 실제 렌더링은 2단계를 거침
- 1단계 : HTML을 서버에서 JS 번들을 이용해서 HTML 생성 후 > 웹 브라우저 렌더링
- 2단계 : 하이드레이션(Hydration)을 통해서 JS의 상호작용기능을 적용함.
- FCP 진행 이후에 사용자 상호작용 가능한 시점을 말함.
- 이 상호작용 가능한 시점을 TTI 라고 합니다.
- 위의 내용은 면접에서 물어볼 수 있으며, Next.js의 이해를 위한 상식
React App의 단점인 FCP를 개선하고 React App의 빠른 페이지 이동 활용