Next.js 기초

Next.js는 React 기반의 웹 프레임워크입니다. 서버사이드 렌더링(SSR), 정적 사이트 생성(SSG) 등 다양한 기능을 제공하여 프로덕션 환경에 최적화된 애플리케이션을 쉽게 구축할 수 있도록 돕습니다.

개요

React는 UI 라이브러리지만, Next.js는 React를 기반으로 서버와 클라이언트의 경계를 넘나드는 풀스택 프레임워크입니다. SEO 최적화, 뛰어난 성능, 쉬운 라우팅 등 웹 개발의 복잡한 부분을 추상화하여 개발자는 오직 애플리케이션 로직에만 집중할 수 있게 해줍니다.

참고

Next.js는 React 개발 경험이 있는 개발자에게 특히 유용합니다. 기존 React의 SPA(Single Page Application) 방식을 넘어선 다양한 렌더링 방식을 제공합니다.

핵심 개념

Next.js의 핵심은 다양한 렌더링 방식과 라우팅 시스템입니다.

개념 설명
SSR (Server-Side Rendering) 서버에서 HTML을 미리 렌더링하여 클라이언트에 전달합니다. 빠른 초기 로딩과 SEO에 유리합니다.
SSG (Static Site Generation) 빌드 시점에 HTML을 생성하여 정적 파일로 저장합니다. CDN에 배포되어 매우 빠른 성능을 제공하며, 서버 부담이 적습니다.
파일 시스템 라우팅 별도의 라우팅 설정을 할 필요 없이, pages(혹은 app) 디렉토리 내의 파일/폴더 구조가 곧 URL 경로가 됩니다.
API Routes 프론트엔드 코드와 같은 프로젝트 내에 서버 API 엔드포인트를 쉽게 생성할 수 있습니다.

주요 기능

Next.js는 개발 편의성과 성능 최적화를 위한 다양한 기능을 제공합니다.

  • 이미지 최적화: <Image> 컴포넌트를 통해 자동으로 이미지를 최적화하고 지연 로딩합니다.
  • 코드 스플리팅: 페이지별로 필요한 자바스크립트만 로드하여 초기 로딩 속도를 개선합니다.
  • 데이터 페칭(Data Fetching): getStaticProps, getServerSideProps 등 다양한 데이터 패치 함수를 제공합니다.
  • 환경 변수: .env 파일을 사용하여 환경 변수를 쉽게 관리할 수 있습니다.

사용 예제

파일 시스템 라우팅을 활용한 간단한 페이지 예제입니다. (pages 디렉토리 사용 기준)

JavaScript (pages/about.js)
import Link from 'next/link';

export default function AboutPage() {
  return (
    <div>
      <h1>소개 페이지</h1>
      <p>이것은 Next.js로 만들어진 페이지입니다.</p>
      <Link href="/">
        <a>홈으로 돌아가기</a>
      </Link>
    </div>
  );
}
API Routes 예제

pages/api/hello.js 파일 생성 시 /api/hello 경로로 접근 가능합니다.

JavaScript (pages/api/hello.js)
export default function handler(req, res) {
  res.status(200).json({ name: 'Hello, API Routes' });
}

주의사항 및 팁

  • create-next-app 명령어를 통해 보일러플레이트 코드를 쉽게 생성할 수 있습니다.
  • getServerSideProps는 매 요청마다 실행되므로 데이터가 자주 변하는 페이지에 적합합니다.
  • getStaticProps는 빌드 시점에 한 번만 실행되므로, 정적 콘텐츠 페이지에 적합합니다.
주의

Next.js는 React를 기반으로 하지만, 기존의 SPA 개발 방식과는 다른 접근법(특히 렌더링 방식)을 요구합니다. Next.js의 고유한 개념들을 먼저 이해하는 것이 중요합니다.