Next.js를 처음 배우면 "Next.js는 서버를 거쳐서 데이터를 가져온다" 라는 개념이 헷갈릴 수 있습니다.
그렇다면 일반 React와 Next.js의 요청 흐름을 비교하면서 차이점을 살펴보겠습니다.
■ 일반 React (CSR) 요청 흐름
React는 기본적으로 CSR(Client-Side Rendering) 방식입니다.
즉, 브라우저에서 HTML을 먼저 띄운 후, 필요한 데이터를 백엔드에서 가져와서 화면을 업데이트하는 방식이에요.
브라우저 (React 앱) → 백엔드 (API 서버)
📌 CSR 방식 요청 흐름
- 사용자가 페이지에 접속
- 브라우저가 React 앱을 실행
- React가 fetch 또는 axios로 백엔드 API를 호출
- 백엔드가 데이터를 응답하면, React가 화면을 업데이트
즉, 데이터 요청이 클라이언트(브라우저)에서 실행된다는 것이 핵심입니다.
■ Next.js (SSR) 요청 흐름
Next.js는 기본적으로 SSR(Server-Side Rendering) 방식을 지원합니다.
즉, Next.js 서버에서 먼저 HTML을 생성한 후, 브라우저에 전달하는 방식이에요.
Next.js 서버 (SSR) → 백엔드 (API 서버)
↓
브라우저 (렌더링된 HTML 수신)
📌 SSR 방식 요청 흐름
- 사용자가 페이지에 접속
- Next.js 서버가 먼저 실행되어 데이터를 백엔드 API에서 가져옴
- 백엔드가 데이터를 응답하면, Next.js 서버가 이를 이용해 완성된 HTML을 생성
- 브라우저는 Next.js 서버가 보낸 HTML을 받아 즉시 화면을 표시
즉, Next.js SSR을 사용하면, 브라우저가 직접 API를 호출하지 않고, Next.js 서버가 API와 통신한 후 결과를 브라우저에 전달합니다.
■ Next.js가 일반 React와 다른 이유
일반 React(CSR)에서는 브라우저가 직접 백엔드에 API 요청을 보냅니다.
반면, Next.js(SSR)를 사용하면 Next.js 서버가 먼저 API 요청을 처리한 후, 완성된 HTML을 브라우저에 전달합니다.
이 차이 때문에 Next.js SSR에서는 sessionStorage, window, document 같은 브라우저 전용 API를 직접 사용할 수 없는 것이죠.
📌 결론
- 일반 React(CSR)는 브라우저에서 실행되며, 클라이언트가 직접 API 요청을 보냅니다.
- Next.js(SSR)는 Next.js 서버가 먼저 실행되어 API와 통신한 후, 브라우저에 HTML을 전달합니다.
- 이 차이 때문에 Next.js에서는 브라우저에서만 동작하는 API(sessionStorage, window)를 직접 사용하면 안 되고, useEffect를 활용해야 합니다.
즉, Next.js는 일반 React와 다르게 "Next 서버 → 백엔드 → 브라우저" 순서로 동작할 수 있습니다!
'React' 카테고리의 다른 글
[TypeScript] 제네릭을 활용한 setDto 최적화 - any 대신 T를 쓰는 이유 (0) | 2025.03.13 |
---|---|
[Next.js] sessionStorage is not defined 오류 (0) | 2025.02.21 |
[React Query] queryKey란? (0) | 2025.02.10 |
[Middleware] Next.js를 활용한 인증 로직 구현하기 (0) | 2025.01.30 |
[WebSocket] React로 WebSocket 구현하기(feat.Typescript) (0) | 2025.01.27 |