
📅 2025-12-01
➡️ Next.js에 대해 새롭게 알게 된 것 또는 헷갈리는 부분 정리
| 구분 | 라이브러리 | 프레임워크 |
|---|---|---|
| 주도권 | 개발자에게 있음 | 프레임워크 규칙에 따름 |
| 사용 방식 | 필요한 기능만 선택해서 사용 | 구조와 흐름이 정해져 있음 |
| 예시 | React, Lodash, Axios | Next.js, Vue.js, Angular, Spring, Nest.js |
복잡한 설정 생략
Full Stack 개발 지원
Route Handlers를 지원해서 full stack웹 개발이 가능하도록 함다양한 렌더링 방식 지원
| 방식 | 설명 |
|---|---|
| CSR | 브라우저에서 렌더링 |
| SSR | 요청 시 서버에서 HTML 생성 |
| SSG | 빌드 시 정적 파일 생성 |
| ISR | 정적 페이지 + 시간 주기별 재검증 |
코드 스플리팅
데이터 패칭
쉬운 배포
npx create-next-app@latest my-app --yes
cd my-app
npm run dev


| React | Next.js |
|---|---|
react-router-dom 사용, 수동 라우팅 관리 | 파일/폴더 구조 기반의 자동 라우팅(File System Routing) |
| 라우팅과 구조를 직접 설계해야 함 | 구조 = URL, 자동 연결 |
| 설정 필요 | 설정 최소화 |
| 특성 | Pages Router | App Router |
|---|---|---|
| 디렉토리 구조 | pages/ 디렉토리 사용 | app/ 디렉토리 사용 |
| 라우팅 방식 | 파일 기반 라우팅 (pages/about.js -> /about) | 폴더 기반 라우팅 (app/about/page.js -> /about) |
| 동적 라우팅 | [param] 문법 (pages/posts/[id].js) | [param] 폴더 (app/posts/[id]/page.js) |
| 레이아웃 관리 | 전역적으로 설정하거나 각 페이지마다 설정 | layout.js 파일을 통해 폴더별로 설정 |
| 데이터 페칭 | getStaticProps, getServerSideProps, getStaticPaths | React 18의 새로운 데이터 페칭 메서드 사용 가능 |
| 서버 컴포넌트 지원 | 기본적으로 클라이언트 중심 | 서버 컴포넌트와 클라이언트 컴포넌트 명시적 구분 가능 |
| 사용 용이성 | 간단하고 직관적임 | 유연하지만 초기 설정이 복잡할 수 있음 |
| 프로젝트 적용 | 기존 프로젝트에 적합 | 신규 프로젝트 및 최신 기능에 적합 |
Next.js는 폴더와 파일 구조를 기반으로 URL 경로를 자동으로 생성하는 방식의 라우팅 제공


app/ 기준, 또는 레이아웃 root)/로 구분된 경로 조각// app/test/page.tsx
import React from "react";
const page = () => {
return (
<div>
<h1>Test Page </h1>
<p>Test Next</p>
</div>
);
};
export default page;

/test 경로로 접속 가능<Route path="/products/:id" element={<Product />} />[ ] 로 감싸서 동적 경로 설정 예) app/posts/[id]/pages.tsx 
import React from 'react';
type Params = {
params: Promise<{ id: number }>;
};
const page = async ({ params }: Params) => {
const { id } = await params;
return <div>ID: {id}</div>;
};
export default page;/posts/1 /posts/2 경로에 대해 동적으로 페이지 생성( ) 로 감싸면 URL 경로에 포함되지 않는 그룹 생성