NextJs
서버 컴포넌트
해기97
2025. 1. 10. 20:50
Next.js에서는 서버 컴포넌트라는 새로운 개념이 도입되었다.
처음에 내가 이해한게 긴가민가해서 메모를 하며 이해해야할 것 같다.
React와 Next.js의 주요 차이점
- React : 브라우저에서 모든 자바스크립트가 실행된다. 즉 클라이언트 사이드 렌더랑 (CSR) 방식으로 작동된다.
- Next.js : 서버 컴포넌트와 클라이언트 컴포넌트를 분리해서 사용할 수 있다.
서버 컴포넌트란?
- 서버에서 실행되는 컴포넌트
- Node.js 환경에서 실행된다. -> 따라서 콘솔을 찍으면 터미널에서 출력이된다. (페이지에서 관리자 도구로 확인해도 나타나지않는다.)
- 브라우저에 자바스크립트를 거의 전달하지 않는다. -> 성능 최적화가 좋다. (페이지 로딩이 빠르다)
- 데이터베이스 접근, API호출, 보안 로직에 적합하다.
// app/page.tsx (Next.js 13+)
export default function Home() {
console.log("서버에서 실행되는 콘솔 로그"); // 터미널에 출력
return <div>Hello, Server Components!</div>;
}
클라이언트 컴포넌트란?
- 브라우저에서 실행되는 컴포넌트 (아마 일반 리액트 생각하면 편할 것 같다.)
- useState, useEffect 같은 리액트 훅 사용 가능
- 자바스크립트가 브라우저에 전달된다.
- 상호작용이 필요한 컴포넌트 (버튼 클릭, 폼 제출 등)에 적합하다.
"use client"; // 이 파일은 클라이언트 컴포넌트임을 명시
import { useState } from 'react';
export default function Counter() {
const [count, setCount] = useState(0);
return (
<div>
<p>Count: {count}</p>
<button onClick={() => setCount(count + 1)}>Increment</button>
</div>
);
}
결론
- 서버 컴포넌트는 node.js 환경에서 실행되며 콘솔이 터미널에 찍힌다.
- next.js는 서버 중심의 렌더링을 기본으로 하며 필요에 따라 use client를 사용하여 클라이언트 컴포넌트로 전환이 가능하다.
- 내가 이해한 것
즉, next.js에서는 이제 컴포넌트가 서버 컴포넌트와 클라이언트 컴포넌트 두 종류로 분류해가며 사용해야하며
용도에 맞게 사용해야할 것 같다. node환경에서 바로 사용해도 좋을 것과 클라이언트 컴포넌트에서 사용해야 좋을 것
구분 짓는 것이 처음에는 꽤나 힘들 것 같지만 사용해가며 이해해야할 것 같다.