Next.js

🚀 Next.js 초보자를 위한 프로그래밍 가이드 및 학습 로드맵

수아파파's 2025. 2. 24. 19:26
반응형

서론 - Next.js란 무엇인가? 왜 배워야 할까?
본론 - Next.js 단계별 학습 로드맵
결론 - Next.js 실전 프로젝트와 다음 단계 학습 방향


1️⃣ 서론: Next.js란 무엇인가? 왜 배워야 할까?

🔹 Next.js란?

  • Next.jsReact 기반의 프레임워크서버 사이드 렌더링(SSR), 정적 사이트 생성(SSG), **클라이언트 사이드 렌더링(CSR)**을 모두 지원해.
  • 파일 기반 라우팅, SEO 최적화, 페이지 성능 최적화 등 다양한 기능을 제공하며, Vercel에서 개발하고 유지보수 중.
  • React의 확장판으로, React를 알고 있다면 배우기 매우 쉬움!

🔹 Next.js를 배워야 하는 이유

SEO 최적화 → SSR과 SSG로 검색 엔진 최적화 가능
빠른 페이지 로딩 속도 → 정적 사이트 생성(SSG)으로 최적화
파일 기반 라우팅 → 디렉토리 구조만으로 URL 경로 설정 가능
API Routes → Next.js에서 백엔드 API도 쉽게 작성 가능
풀스택 개발 가능 → React 프론트엔드 + Next.js API Routes 백엔드

🔥 Next.js는 React의 단점을 보완하고, SEO와 성능을 극대화하는 최신 프레임워크!
이제 단계별 학습 로드맵으로 배우는 방법을 알아보자.


2️⃣ 본론: Next.js 단계별 학습 로드맵

📌 1단계: Next.js 설치 및 기본 설정

🎯 목표: Next.js 개발 환경 설정 및 기본 개념 이해

📌 설치 및 기본 설정

npx create-next-app@latest my-next-app
cd my-next-app
npm run dev
  • npx create-next-app@latest: 최신 Next.js 버전으로 프로젝트 생성
  • npm run dev: 개발 서버 실행 (http://localhost:3000)

📌 디렉토리 구조 이해하기

my-next-app/
├── pages/          # 파일 기반 라우팅 디렉토리
│   ├── index.js    # 홈 페이지 (URL: /)
│   └── about.js    # About 페이지 (URL: /about)
├── public/         # 정적 파일 (이미지, 폰트 등)
└── styles/         # CSS 및 스타일 파일

Next.js는 pages 디렉토리의 파일 이름이 URL 경로가 됨

  • pages/index.js → / URL
  • pages/about.js → /about URL

📌 첫 번째 페이지 만들기 (pages/about.js)

export default function About() {
  return (
    <div>
      <h1>About Page</h1>
      <p>This is the about page of my Next.js app!</p>
    </div>
  );
}

파일 이름과 디렉토리 구조만으로 URL 경로 설정이 완료됨!


📌 2단계: 파일 기반 라우팅 & 동적 라우팅

🎯 목표: Next.js의 라우팅 시스템 이해 및 동적 라우팅 적용

📌 파일 기반 라우팅

  • pages 디렉토리 내부 파일 이름이 URL 경로가 됨
  • React Router와 같은 라우팅 설정 없이도 자동으로 페이지 이동 가능

📌 예시 디렉토리 구조

pages/
├── index.js        # 홈 페이지 (URL: /)
└── blog/
    ├── index.js    # 블로그 목록 (URL: /blog)
    └── [id].js     # 동적 라우팅 (URL: /blog/1, /blog/2)

 

📌 동적 라우팅 (pages/blog/[id].js)

import { useRouter } from "next/router";

export default function BlogPost() {
  const router = useRouter();
  const { id } = router.query;

  return (
    <div>
      <h1>블로그 포스트 {id}</h1>
      <p>이 포스트의 ID는 {id}입니다.</p>
    </div>
  );
}

[id].js 파일을 사용하면 id가 동적으로 URL에 반영됨!

  • /blog/1 → id: 1
  • /blog/2 → id: 20

📌 3단계: 정적 사이트 생성 (SSG) 및 서버 사이드 렌더링 (SSR)

🎯 목표: SSG와 SSR 개념 이해 및 데이터 페칭 방법 익히기

🔹 정적 사이트 생성 (SSG)

  • getStaticProps() 사용 → 빌드 시 데이터 가져와 정적 HTML 생성
  • 페이지 로딩 속도가 빠르고, SEO에 유리

📌 예제 코드 (pages/products/index.js)

export async function getStaticProps() {
  const res = await fetch("https://fakestoreapi.com/products");
  const products = await res.json();

  return { props: { products } };
}

export default function Products({ products }) {
  return (
    <div>
      <h1>상품 목록</h1>
      <ul>
        {products.map((product) => (
          <li key={product.id}>{product.title}</li>
        ))}
      </ul>
    </div>
  );
}

SSG는 정적 사이트 생성으로 SEO 최적화 및 로딩 속도 개선!


🔹 서버 사이드 렌더링 (SSR)

  • getServerSideProps() 사용 → 요청 시마다 서버에서 데이터를 가져와 렌더링
  • 실시간 데이터가 필요한 페이지에 적합

📌 예제 코드 (pages/products/[id].js)

export async function getServerSideProps(context) {
  const { id } = context.params;
  const res = await fetch(`https://fakestoreapi.com/products/${id}`);
  const product = await res.json();

  return { props: { product } };
}

export default function Product({ product }) {
  return (
    <div>
      <h1>{product.title}</h1>
      <p>{product.description}</p>
      <p>가격: ${product.price}</p>
    </div>
  );
}

SSR은 요청할 때마다 서버에서 데이터를 가져와 최신 상태 유지!


📌 4단계: API Routes 활용하기 (백엔드 API 개발)

🎯 목표: Next.js에서 백엔드 API 개발하기

📌 API Route 예제 (pages/api/hello.js)

export default function handler(req, res) {
  res.status(200).json({ message: "Hello, Next.js API!" });
}

pages/api 폴더에 파일을 만들면 자동으로 API Endpoint 생성!

  • /api/hello → JSON 데이터 응답 ({ "message": "Hello, Next.js API!" })
  • 백엔드 서버 없이도 풀스택 애플리케이션 개발 가능!

3️⃣ 결론: Next.js 실전 프로젝트와 다음 단계 학습 방향

📌 실전 프로젝트 추천

블로그 만들기 (SSG + 동적 라우팅 + API Routes)
상품 목록 페이지 (SSR + API 연동)
포트폴리오 사이트 (SSG + SEO 최적화)
E-commerce 사이트 (Next.js + Stripe 결제 연동)

🔥 Next.js는 React를 확장하여 SEO, 성능, 백엔드까지 모두 해결해주는 프레임워크!
🚀 이제 Next.js를 활용한 실전 프로젝트에 도전해보자!

반응형