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의 고유한 개념들을 먼저 이해하는 것이 중요합니다.