강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

dl_audgh님의 프로필 이미지
dl_audgh

작성한 질문수

한 입 크기로 잘라먹는 Next.js(v15)

page를 클라이언트 컴포넌트로 작성해도 rsc_payload가 생성되는 이유는 무엇인가요??

해결된 질문

작성

·

82

0

안녕하세요! 덕분에 nextjs에 대해 깊에 알아가고 있습니다.
제목처럼 page 컴포넌트에 'use client'를 명시하고 빌드 해도 해당 페이지에 대한 rsc_payload가 생성되어서 .next 빌드 파일을 살펴 보았습니다.

페이지를 클라이언트 컴포넌트로 작성하던 서버 컴포넌트로 작성하던 .next 빌드 파일 server, static/chunk/app 폴더에 모두 page.js 파일이 생성되는 것을 확인했습니다.

1. server 폴더에 있는 page.js는 해당 페이지에 필요한 번들 파일에 대한 내용인 거고, static 폴더에 있는 page.js는 해당 페이지에 그려질 내용에 대한 파일인 건가요??

2. 그래서 page컴포넌트를 클라이언트 컴포넌트로 만들어도 페이지에서 사용할 번들 파일의 주소를 알아야 하기 때문에 rsc_payload를 만들어서 내려주는 건가요??

답변 2

0

이정환 Winterlood님의 프로필 이미지
이정환 Winterlood
지식공유자

안녕하세요 이정환입니다.

우선 'use client'를 통해 페이지 컴포넌트 전체를 클라이언트 컴포넌트로 전환해도 RSC Payload가 생성되는 이유는 해당 페이지의 메타 데이터 같은 부가 정보를 별도로 저장하기 위함입니다. 이 정보에는 페이지 컴포넌트가 작성된 JS 파일의 위치 또한 함께 명시됩니다.

.next/server 폴더와 .next/static 폴더의 차이는 다음과 같습니다.

  • .next/server 폴더 : 서버 사이드에서 실행될 코드를 저장하는 폴더입니다. 여기에는 서버액션이나 서버 컴포넌트, 미들웨어 등의 코드가 저장됩니다.

  • .next/static 폴더 : 클라이언트에서 필요로하는 정적 파일들을 보관하는 곳 입니다. HTML, CSS, JS, 이미지 등의 파일이 포함됩니다. 이때 클라이언트에서 실행되어야 하는 JS 파일은 여기에 보관됩니다!

0

안녕하세요, 인프런 AI 인턴입니다. dl_audgh님, Next.js에서 페이지를 클라이언트 컴포넌트로 작성해도 rsc_payload가 생성되는 이유에 대해 궁금하신 점을 설명드리겠습니다.

1. 빌드 파일 구조 설명

Next.js에서 페이지를 빌드할 때, .next 디렉토리에는 여러 폴더와 파일들이 생성됩니다. server 폴더와 static/chunk/app 폴더에 생성되는 파일들은 각각의 목적을 가지고 있습니다.

  • server 폴더: 여기에 있는 page.js 파일은 서버 사이드에서 필요한 번들 파일들을 포함합니다. 이 파일은 페이지가 서버 컴포넌트일 때 서버에서 실행할 수 있도록 준비됩니다.

  • static/chunk/app 폴더: 이 폴더 안의 page.js 파일은 클라이언트 측에서 사용할 코드들을 포함하고 있습니다. 이는 클라이언트가 페이지를 렌더링하는 데 필요한 자바스크립트 번들입니다.

2. RSC Payload와 클라이언트 컴포넌트

RSC (React Server Components) Payload는 서버 컴포넌트에서 생성된 데이터로, 클라이언트가 서버 컴포넌트와 상호작용할 때 필요한 데이터입니다. 클라이언트 컴포넌트로 작성하더라도 페이지가 클라이언트와 서버 간에 어떻게 동작해야 하는지를 이해하기 위해 필요한 정보를 보유하게 됩니다.

  • 특히, 페이지 이동이나 데이터를 미리 패칭할 때 필요한 정보는 rsc_payload에 포함될 수 있으며 이는 페이지의 초기 상태를 설정하는 데 사용될 수 있습니다.

종합 결론

페이지가 클라이언트 컴포넌트로 작성되었더라도, Next.js가 페이지를 최적화해서 제공하기 위해 다양한 메타데이터와 번들 정보를 활용하게 됩니다. 이는 성능과 사용성을 보장하기 위함이며, 페이지의 번들 파일과 관련된 정보의 효율적 로딩을 위해 사용됩니다.

추가 자료 및 유사 질문

다른 강의생들도 비슷한 질문을 하였고, 다음의 링크에서 유사한 주제에 대한 논의를 확인할 수 있습니다:
- 리액트와 Next.js의 JS 번들링 방식의 차이
- 프리 패칭과 번들 불러오기 방식

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

dl_audgh님의 프로필 이미지
dl_audgh

작성한 질문수

질문하기