RSC 2

[React][Next.js] 코드 스플리팅(code spliting)과 리액트 서버 컴포넌트(RSC)

컴포넌트 코드들을 처음에 모두 정적으로 import하게 된다면 그 크기는 계속 커지게 된다. 이를 방지하기 위해, 실제 필요한 코드일 경우에만 import를 해줌으로써 번들 크기를 줄이는 방법을 ‘코드 스플리팅(code spliting)’이라고 한다. 서버 컴포넌트 전에는 React.lazy()를 이용하여 직접 코드를 스플리팅했다. React.lazy()는 컴포넌트를 지연 로딩하는 방법으로, 컴포넌트가 실제로 렌더링되기 전까지는 해당 모듈을 로드하지 않는다. React.lazy()는 동적 import를 사용하여 필요할 때만 모듈을 로드하며, 이를 통해 초기 로딩 시간을 줄이고, 애플리케이션 성능을 최적화할 수 있다. 다음은 서버 컴포넌트 이전 코드의 예시이다.import React, { Suspense,..

Next 2024.07.15

[React] 리액트 서버 컴포넌트(RSC)와 서버 사이드 렌더링(SSR)

2020년 말, 리액트 팀은 ‘제로 번들 사이즈 React 서버 컴포넌트’ 개념을 도입했다. 서버 컴포넌트란?리액트 서버 컴포넌트는 리액트 18 버전에서 추가된 기능이며, 서버 측에서 페이지가 아닌 컴포넌트를 실행하여 미리 렌더링된 마크업을 생성후, 클라이언트에게 전달되어 사용자에게 콘텐츠를 보여주는 방식이다.Next.js 12까지는 페이지 단위의 컴포넌트에서만 백엔드 리소스에 접근이 가능했지만, 13부터는 RSC를 사용하게 되면서 페이지 단위가 아닌 컴포넌트 단위에서 서버에 접근이 가능해졌다!  제로 번들 사이즈란? 프론트엔드를 개발하면서 라이브러리들을 추가하다 보면 번들 사이즈가 늘게 되고, 이는 서비스 성능에 부정적인 영향을 미치게 된다.요즘은 많은 라이브러리들이 트리 셰이킹(아래 설명 참고)을 지..

React 2024.06.30