⭐ Server 컴포넌트와 Client 컴포넌트 개념 정리
렌더링 (Next.js 공식문서 참고)
사용자가 작성한 코드를 UI 로 변환
렌더링 환경, 전략 및 런타임 간의 차이점 이해 필요
간단 비교
@ Code Example
const PostContent = async ({postId}) => {
const response = await fetch(`https://api.example.com/posts/${postId}`);
const post = await response.json();
return (
<div>
<h1>{post.title}</h1>
<p>{post.content}</p>
</div>
);
}
export default PostContent;
'use client';
import {useState} from "react";
import PostContent from "./PostContent";
const Post = ({postId}) => {
const [likes, setLikes] = useState(0);
return (
<div>
<PostContent postId={postId} />
<button onClick={() => setLikes(likes+1)}>Like</button>
{/* More interactive components like comments */}
</div>
);
}
export default Post;
import Post from "./Post";
const Page = () => {
const postId = 1;
return (
<div>
<h1>Blog Post</h1>
<Post postId={postId} />
</div>
);
}
export default Page;
📢 TIPS
클라이언트 Compnent 에서 서버 Compenent 사용한 경우
@ 서버 구성 요소는 여전히 서버에서 렌더링 클라이언트는 이 HTML 을 수신하여 즉시 표시 @ 서버에서 렌더링되어 클라이언트에 정적 HTML 로 전송 @ 클라이언트 측에서 실행해야 하는 JS 의 양을 줄여 성능을 향상 @ 빠른 초기 로딩이 가능
🖍️ SSR
- 서버 측 렌더링
- 요청 시 페이지가 서버에서 사전 렌더링되고
생성된 HTML이 클라이언트로 전송되는 경우🖍️ CSR
- 클라이언트 측 렌더링
- JavaScript를 사용하여 브라우저에서 페이지가
완전히 렌더링되는 경우