TIL | 난 FE니까 Next.js

레이나·2025년 3월 12일

Today I Learned

목록 보기
46/47
post-thumbnail

[2025. 03. 12 수요일]

Next.js를 배우는 과정에서 알고있어야 할 개념들에 대해서 정리해본다.

1. 기존 리액트의 단점과 SPA, 코드 스플리팅

  • 기존에 사용하던 리액트는 SPA(Single Page Application) 방식을 사용한다.
    애플리케이션의 모든 뷰가 하나의 HTML 파일 내에서 JS로 관리되고, 클라이언트(브라우저)에서 동적으로 페이지(컴포넌트) 전환이 이루어진다.

  • JS의 비중이 크기 때문에 전체 애플리케이션 코드가 한꺼번에 로드될 경우 초기 로딩 속도가 느려질 수 있다. 또한 JS가 모두 로드되고 온전한 렌더링이된 후에 실행되기 때문에 초기에 사용자에게 빈 화면이 보여질 수도 있다.

  • 클라이언트에서 렌더링되기 때문에, 검색 엔진 봇이 JS 실행 전에 빈 HTML만 보게 될 가능성이 있어 SEO 최적화에 불리하다.

  • 위와 같은 사항들을 개선하기 위해 JS를 쪼개서 필요한 부분만 먼저 로드하는 코드 스플리팅이 필요 하다.
    - React.lazy, next/dynamic


2. Hydration, TTV, TTI

Hydration
서버에서 렌더링된 정적 HTML을 클라이언트(브라우저)의 JS가 가져와서, 이벤트 핸들러를 붙이는 등의 작업을 수행해 페이지를 동적으로 만드는 과정.

  • 수업에서는 북어포에 물을 적신다고 설명을 했다.
    정적 HTML(TTV)에 JS(TTI)를 채워, TTV와 TTI의 간극을 채우는 개념을 수(水)화라고 한다.
  • SSR로 빠르게 보여진 정적 콘텐츠를, 사용자가 상호작용할 수 있도록 전환하는 단계다.

TTV (Time to View)

  • 사용자가 페이지를 요청한 후, 시각적으로 콘텐츠가 브라우저에 표시되기까지 걸리는 시간으로, 사용자가 콘텐츠를 인지할 수 있는 순간이다.

TTI (Time to Interaction)

  • 페이지가 사용자가 인터렉션할수 있는 상태(클릭, 스크롤 등 사용자의 상호작용에 반응할 수 있는 상태)가 되기까지 걸리는 시간을 의미한다.

3. JS의 런타임 환경 2가지

1) 브라우저 환경 (Client-side)

  • 사용자 디바이스(브라우저)에서 실행
  • DOM, 브라우저 API 등을 이용해 UI를 조작
  • 사용자와의 직접 상호작용, 이벤트 처리, 동적 페이지 업데이트

2) Node.js 환경 (Server-side)

  • 서버에서 실행되는 자바스크립트 런타임
  • 파일 시스템, 네트워크 요청 등 서버 관련 작업에 적합
  • SSR, API 서버, 빌드 도구 등

Next.js는 이 두 환경을 모두 활용하여, 서버에서 초기 HTML을 렌더링하고 클라이언트에서 인터랙션을 관리합니다. 라고 한다.
두 가지 환경을 모두 활용하기 때문에 Next.js 공식문서에서 Web Server 프레임워크라고 소개하고 있다.


5. SSG, ISR, SSR, CSR의 차이점

SSG (Static Site Generation)

  • 개념:
    빌드 시 미리 HTML을 생성하여 정적 파일로 배포하는 방식.
  • 장점:
    빠른 로딩 속도, 낮은 서버 부하, 높은 보안성
  • 적합한 경우:
    콘텐츠 업데이트가 자주 일어나지 않는 페이지

ISR (Incremental Static Regeneration)

  • 개념:
    SSG의 장점을 유지하면서, 특정 간격이나 조건에 따라 정적 페이지를 업데이트할 수 있는 방식.
  • 장점:
    정적 사이트의 빠른 로딩과 함께, 최신 데이터를 제공할 수 있음.
  • 적합한 경우:
    일부 페이지는 정적이지만, 주기적인 업데이트가 필요한 경우

SSR (Server-Side Rendering)

  • 개념:
    사용자의 요청마다 서버에서 HTML을 렌더링해 제공하는 방식.
  • 장점:
    항상 최신 데이터를 반영할 수 있고, SEO에 유리
  • 단점:
    서버 부하 증가, 응답 시간이 빌드된 정적 파일보다 느릴 수 있음

CSR (Client-Side Rendering)

  • 개념:
    브라우저에서 자바스크립트를 통해 동적으로 콘텐츠를 렌더링하는 방식.
  • 장점:
    풍부한 인터랙티브 기능과 동적 업데이트가 용이함
  • 단점:
    초기 로딩 시 빈 화면 또는 로딩 상태가 길어질 수 있으며, SEO 최적화가 어려울 수 있음

Next.js TIP

  • 기본적으로 Server Component이며, 렌더링단위 역시 Component라는것을 인지하면 조금은 Next.js를 이해하는데 도움이 된다!!
  • Client와 Server는 상대적인 개념이라는 것도 유의하자!
profile
one setp

0개의 댓글