Next.js 13에서 "클라이언트 사용" 지시문이 작동하는 방식
P粉044526217
P粉044526217 2023-08-26 21:55:31
0
1
512

Next.js 13.4와 새로운 app/ 디렉토리를 사용하여 서버 측 렌더링에 대해 배우려고 합니다. 내가 이해한 바로는 모든 구성 요소는 기본적으로 서버 구성 요소입니다(즉, 서버 측에서 렌더링됨).

그러나 'use client' 지시문을 사용하여 구성 요소를 client 구성 요소로 만들 수 있습니다.

아래에서는 간단한 "Hello World" 구성 요소를 먼저 서버 구성 요소로 설정한 다음 클라이언트 구성 요소로 설정했습니다. 각각의 경우에 페이지 소스 코드를 비교합니다.

src/app/page.js(服务器组件)

기본 함수 내보내기 Home() { 반품 ( <메인> 

Hello World

) }

크롬 > 查看页면源代码

  <머리>  다음 앱 만들기     <본문> <메인> 

Hello World

<스크립트>self.__next_f.push([1, "./node_modules/next/dist/client/comComponents/render-from-template-context.js","chunks":["app-client-internals:static /chunks/app-client-internals.js"],"name":"","async":false}n"]) <스크립트>self.__next_f.push([1, "5:[[["$","meta",null,{"charSet":"utf-8"}],null,null,null,null, null,null,null,null,null,null,["$","meta",null,{"name":"viewport","content":"width=device-width,initial-scale=1"} ],null,null,null,null,null,null,null,null,null,null,[]],[null,null,null,null],null,null,[null,null,null,null,null ],null,null,null,null,null]n3:[[["$","meta",null,{"charSet":"utf-8"}],["$","title",null ,{"children":"다음 앱 만들기"}],["$","meta",null,{"name":"description","content":"다음 앱 만들기에 의해 생성됨"}],null, null,null,null,n"])

src/app/page.js(客户端组件)

'클라이언트 사용'; 기본 함수 내보내기 Home() { 반품 ( <메인> 

Hello World

) }

Chrome > 查看页面源代码

    Create Next App    

Hello World

<스크립트>self.__next_f.push([1, "5:[[["$","meta",null,{"charSet":"utf-8"}],null,null,null,null, null,null,null,null,null,null,["$","meta",null,{"name":"viewport","content":"width=device-width,initial-scale=1"} ],null,null,null,null,null,null,null,null,null,null,[]],[null,null,null,null],null,null,[null,null,null,null,null ],null,null,null,null,null]n3:[[["$","meta",null,{"charSet":"utf-8"}],["$","title",null ,{"children":"다음 앱 만들기"}],["$","meta",null,{"name":"description","content":"다음 앱 만들기에 의해 생성됨"}],null, null,null,null,n"])
<시간>

我很困惑,因为客户端组件似乎已预渲染了 HTML,但“Hello World”显然存于源代码中。我期望看到类似于 React 根 DOM节点的东西 - 基本上是一个공적 div 等待注入一些 HTML。내가 어디에 있나요?

P粉044526217
P粉044526217

모든 응답 (1)
P粉268654873

여기부터

서버 및 클라이언트 구성 요소는 정적 렌더링 중에 다르게 렌더링됩니다.

  • 클라이언트 구성 요소용 HTML 및 JSON은 사전 렌더링되어 서버에 캐시됩니다. 그런 다음 캐시된 결과는 수화를 위해 클라이언트로 전송됩니다.
  • 서버 구성 요소는 React에 의해 서버에서 렌더링되며 해당 페이로드는 HTML을 생성하는 데 사용됩니다. 클라이언트 측에서 구성 요소를 혼합하는 데에도 동일한 렌더링 로드가 사용되므로 클라이언트 측에서는 JavaScript가 필요하지 않습니다.

이제서버 및 클라이언트 구성 요소를 사용하면 React는 클라이언트서버 모두에서 렌더링할 수 있습니다. 즉, 구성 요소 수준에서 렌더링 환경을 선택할 수 있습니다.

기본적으로app라우터는서버 구성 요소를 사용하므로 서버에서 구성 요소를 쉽게 렌더링하고 클라이언트에 전송되는 JavaScript의 양을 줄일 수 있습니다.

    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿
    회사 소개 부인 성명 Sitemap
    PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!