Next.js는 React 기반의 프레임워크로, 서버사이드 렌더링(SSR), 정적 사이트 생성(SSG), 라우팅 관리 등 React의 한계를 보완하기 위해 설계되었습니다.
이 프레임워크는 성능 향상, SEO 최적화, 그리고 개발자 경험 개선에 중점을 둡니다.
이번 글에서는 Next.js의 주요 특징, 설치, 기본 사용법, 그리고 React와의 차이점을 알아보겠습니다. 😊
1. Next.js란 무엇인가요?
Next.js는 React 애플리케이션의 생산성과 성능을 극대화하기 위한 프레임워크입니다.
- 서버사이드 렌더링(SSR)과 정적 사이트 생성(SSG)을 지원하여 SEO와 초기 로딩 속도를 개선
- 파일 기반 라우팅으로 개발 단순화
- API 라우트와 같은 백엔드 기능 포함
2. Next.js의 주요 특징
1) 서버사이드 렌더링(SSR)
Next.js는 서버에서 React 컴포넌트를 렌더링하여 클라이언트에 HTML을 전달합니다.
- 초기 로딩 속도 향상
- 검색 엔진 최적화(SEO) 개선
2) 정적 사이트 생성(SSG)
미리 렌더링된 HTML을 정적으로 제공하여 초고속 로딩을 지원합니다.
3) 파일 기반 라우팅
폴더와 파일 구조만으로 라우팅을 자동 설정할 수 있습니다.
4) API 라우트
서버 없이도 백엔드 기능(API)를 구현할 수 있습니다.
3. Next.js 설치 및 설정
설치 명령어
Next.js 프로젝트는 다음 명령어로 쉽게 생성할 수 있습니다:
npx create-next-app@latest my-next-app
cd my-next-app
npm run dev
실행 결과
localhost:3000에서 기본 Next.js 애플리케이션이 실행됩니다.
4. Next.js 기본 사용법
1) 페이지 생성
Next.js는 pages 폴더의 파일 구조를 기반으로 라우팅을 자동 설정합니다.
예제: /pages/index.js
export default function Home() {
return <h1>Welcome to Next.js!</h1>;
}
예제: /pages/about.js
export default function About() {
return <h1>About Us</h1>;
}
URL
- /pages/index.js → /
- /pages/about.js → /about
2) 서버사이드 렌더링 (SSR)
getServerSideProps
getServerSideProps를 사용하면 서버에서 데이터를 가져와 페이지에 전달할 수 있습니다.
export async function getServerSideProps() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts');
const data = await res.json();
return { props: { posts: data } };
}
export default function Home({ posts }) {
return (
<div>
<h1>Posts</h1>
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
}
3) 정적 사이트 생성 (SSG)
getStaticProps
getStaticProps를 사용하여 빌드 시 데이터를 가져오고 정적 HTML을 생성합니다.
export async function getStaticProps() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts');
const data = await res.json();
return { props: { posts: data } };
}
export default function Home({ posts }) {
return (
<div>
<h1>Posts</h1>
<ul>
{posts.map((post) => (
<li key={post.id}>{post.title}</li>
))}
</ul>
</div>
);
}
4) API 라우트
/pages/api 폴더에서 API 라우트를 설정할 수 있습니다.
예제: /pages/api/hello.js
export default function handler(req, res) {
res.status(200).json({ message: 'Hello, Next.js!' });
}
/api/hello로 API 요청 가능
5. Next.js와 React의 차이점
| 기능 | React | Next.js |
| 렌더링 방식 | 클라이언트 사이드 렌더링(CSR) | SSR, SSG, CSR 모두 지원 |
| SEO 최적화 | 추가 작업 필요 | 기본 지원 |
| 라우팅 | React Router 등 추가 설치 필요 | 파일 기반 라우팅 |
| 백엔드 기능 | 미지원 | API 라우트 제공 |
6. Next.js 사용 시 주의사항
- SSR/SSG vs CSR
- 모든 페이지에 SSR을 사용하면 서버 부하가 커질 수 있습니다.
- 페이지 특성에 따라 적절한 렌더링 방식을 선택하세요.
- 데이터 보안
- 서버사이드에서만 민감한 데이터를 처리하도록 설정하세요.
- 정적 파일 제공
- public 폴더를 활용해 정적 파일을 쉽게 관리할 수 있습니다.
Next.js는 React의 강력함에 SEO와 성능 최적화를 더해주는 도구입니다.
이 글을 참고하여 Next.js를 프로젝트에 적용하고 웹 애플리케이션의 수준을 한 단계 높여보세요!
'Programming > next.js' 카테고리의 다른 글
| Next.js의 next/image: 이미지 최적화의 완벽 솔루션 (2) | 2024.12.07 |
|---|---|
| Next.js: next/router 로 라우팅을 (1) | 2024.12.07 |
| Next.js로 SEO 최적화: 검색 엔진에서 웹사이트 순위 올리기 (2) | 2024.12.04 |
| React 프로젝트를 Next.js로 변경하기 (0) | 2024.12.04 |