React 웹은 화면을 만드는 방식에 따라 검색엔진이 내용을 볼 수도 있고 못 볼 수도 있음
서버가 빈 HTML 전달
→ 브라우저가 JS 다운로드
→ React 실행
→ 화면 생성
React 앱은 처음 HTML이 거의 비어 있고,
브라우저에서 JavaScript가 실행된 뒤에 화면이 만듬
이걸 CSR, Client-Side Rendering이라함
SSR: 서버에서 HTML을 미리 만들어서 보냄
SSG: 빌드 시점에 HTML을 미리 만들어 둠
Prerender: 크롤봇용 HTML을 미리 생성
즉 검색엔진이 JavaScript를 실행 하지 않아도 본문을 읽을 수 있게 만드는 것임
Next.js SSR/SSG
→ 처음부터 본문이 들어간 HTML 제공
→ 크롤봇이 JS 실행 안 해도 읽을 수 있음
요즘 검색엔진/봇 들이 발전하면서 리엑트여도 가능하다라는 말이 있음
흔히 React가 빠른 이유를 Virtual DOM이라고 설명한다.
하지만 실제로는
가 더 중요한 이유다.
React는 보통 SPA(Single Page Application) 구조를 사용한다.
페이지 이동 시
그래서 앱처럼 부드럽게 동작한다.
일단 Next.js는 페이지를 만드는 방식을 선택 가능
- CSR: 브라우저에서 화면 생성
- SSR: 요청이 들어올 때 서버에서 HTML 생성
- SSG: 빌드할 때 HTML을 미리 생성
React도 쓰면서, 처음부터 내용이 들어있는 HTML을 줄수도 있다.
즉, 봇들이 읽고 가기 좋은 환경이다
위 과정을 Hydration 이라고 함.
Next.js App Router에서는 기본적으로 컴포넌트가 서버에서 실행된다.
그런데 useState, useEffect, onClick 같은 브라우저 기능이 필요하면
클라이언트에서 실행해야 한다.
이때 파일 맨 위에 적는 것이 "use client" 이다.
서버에서 거의 빈 HTML → Browser 가 JavaScript를 실행 하여 화면 구성
페이지가 여러개 처럼 보이게만
사실 HTML 하나에서 화면만 바뀌는 웹 앱
React가 화면을 바로 고치기 전에 사용하는 가짜 화면 설계도
- 다시말해, 필요한 부분만 바꿔 동작하는 방식