안녕하세요!
지난 글에서 React 개념을 정리하면서 마지막에 잠깐 언급했었죠.
"Next.js가 React 기반으로 만들어진 프레임워크"라고요.
근데 막상 "그래서 Next.js가 정확히 뭔데?" 라는 생각이???
바이브코딩으로 뭔가 만들려고 AI한테 물어보면 요즘은 거의 무조건 "React보다 Next.js 추천드려요" 하고 나오는데,
왜 굳이 React 두고 Next.js를 쓰라는 건지...
이 글에서는 Next.js가 왜 나왔는지, React랑 뭐가 다른지, 핵심 기능이 뭔지까지 한 번에 정리해놨습니다.
![[웹개발 기초] Next.js란 무엇인가? — React만으론 부족했던 것들, 초보자도 이해되게 정리 완](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFI-LVI1J91FSwxMUfl1dReDJzsxes5iHrLVNJBw_x9gyCF3M1iqKkFKKEpeohIiyvMj3KltqsFghuu8UaQNnGI8Th5X3JmRHTssp7_aMniVvtpTD7MHGMHuNqpndB83hX001_YklgKTte52eYc2eqKoBhaWmlqbh0dBlSNvq_djXYop2Ux9wdkEc9ljQ/w320-h180/nextjs_blog_thumbnail_415ce086.png) |
[웹개발 기초] Next.js란 무엇인가? React만으론 부족했던 것들, 초보자도 이해되게 정리 완 |
1. Next.js가 뭔지, 진짜 쉽게 설명하면
Next.js는 React를 기반으로 만들어진 풀스택 프레임워크예요.
Vercel이라는 회사가 만들었고, 공식 설명은 "프로덕션급 React 프레임워크"인데,
이걸 더 쉽게 풀면
"React로 화면 만드는 것 + 서버 기능 + 자동 라우팅 + 배포까지 한 번에 되는 도구"
비유를 하나 들어볼게요.
React가 레고 블록 그 자체라면,
Next.js는 그 레고 블록에 설명서, 받침대, 진열장까지 세트로 딸려오는 완제품 키트예요.
레고 블록만 있으면 집을 지을 순 있지만,
어디에 뭘 세워야 하는지,
받침대는 어떻게 만드는지 다 직접 정해야 하잖아요.
Next.js는 그 부분을 미리 다 준비해둔 거예요.
React로 컴포넌트를 만드는 방식은 똑같이 가져가면서,
그 위에 페이지 라우팅, 서버 사이드 렌더링, API 만들기, 이미지 최적화 같은 것들을 기본으로 얹어줍니다.
2. Next.js가 왜 만들어졌냐면 — React만으론 부족했던 것들
React 자체는 정말 훌륭한 도구인데, 실제 서비스를 만들다 보면 아쉬운 부분들이 있었어요.
첫째, 라우팅이 없어요.
React는 화면(컴포넌트)을 만드는 라이브러리일 뿐, "/about 페이지로 이동" 같은 기능은 없어요.
react-router-dom 같은 라이브러리를 따로 설치하고 직접 설정해야 했어요.
둘째, SEO에 약해요.
일반 React 앱은 브라우저에서 JavaScript가 실행돼야 화면이 완성되는 구조예요.
그런데 구글 같은 검색엔진 봇이 페이지를 읽으러 왔을 때,
JS가 실행되기 전 빈 화면만 보고 지나가는 경우가 있었어요.
블로그나 쇼핑몰처럼 검색 노출이 중요한 서비스에는 치명적인 약점이었죠.
셋째, 초기 로딩이 느려요.
React 앱은 처음 접속하면 JS 파일 전체를 다운받고 실행한 다음에야 화면이 뜨는 방식이 많았어요.
이걸 "화면이 하얗게 떴다가 나중에 채워진다"고 표현하기도 해요.
Next.js는 이 세 가지 문제를 해결하려고 나온 프레임워크예요.
"라우팅도 자동으로, 검색엔진에도 잘 잡히게, 처음부터 빠르게 뜨도록 해줄게"
3. 핵심 개념 1 — 파일 기반 라우팅
Next.js에서 제일 먼저 체감되는 차이가 파일 기반 라우팅이에요.
일반 React는 라우터 설정 파일에 "이 주소는 이 컴포넌트 보여줘" 하고 직접 코드를 짜야 해요.
Next.js는 폴더 구조 자체가 곧 URL 주소예요.
app/
├── page.jsx → / (메인 페이지)
├── about/
│ └── page.jsx → /about
└── blog/
└── [id]/
└── page.jsx → /blog/1, /blog/2 ... (동적 라우팅)
about 폴더 안에 page.jsx 파일 하나만 만들면, 그게 곧 /about 페이지가 돼요.
라우터 설정 파일을 따로 만들 필요가 없어요.
대괄호로 감싼 [id] 같은 폴더명은 동적 라우팅이라고 하는데,
블로그 게시물처럼 번호나 값에 따라 페이지가 계속 늘어나는 경우에 씁니다.
/blog/1, /blog/2, /blog/100... 다 같은 파일 하나로 처리돼요.
4. 핵심 개념 2 — 렌더링 방식 (SSR / SSG / CSR)
Next.js 설명에 꼭 나오는 용어들이 있어요.
SSR, SSG, CSR.
셋 다 "화면을 언제, 어디서 그리느냐"의 차이예요.
CSR (Client Side Rendering) — 일반 React 방식
브라우저가 JS를 다운받고 실행해서 화면을 그려요.
사용자 접속 → 빈 화면 → JS 다운로드 → 화면 완성
SSR (Server Side Rendering)
서버에서 미리 완성된 HTML을 만들어서 보내줘요.
사용자 접속 → 서버에서 HTML 완성해서 전달 → 바로 화면 보임
접속하자마자 완성된 화면이 보이니까 체감 속도가 빠르고, 검색엔진 봇도 완성된 HTML을 바로 읽을 수 있어요.
SSG (Static Site Generation)
아예 배포하는 시점에 미리 HTML을 다 만들어놔요.
블로그 글처럼 자주 안 바뀌는 페이지에 유리해요.
매 요청마다 새로 만들 필요가 없으니까 제일 빨라요.
// Next.js에서는 이런 방식들을 페이지 단위로 골라서 쓸 수 있어요
export default async function BlogPage() {
const posts = await getPosts() // 서버에서 데이터 미리 가져오기
return (
<div>
{posts.map(post => <h2 key={post.id}>{post.title}</h2>)}
</div>
)
}
셋 중 뭐가 제일 좋다기보다,
페이지 성격에 따라 골라 쓸 수 있다는 것
자체가 Next.js의 강점이에요.
메인 페이지는 SSG로,
실시간 데이터가 필요한 대시보드는 CSR로,
이런 식으로 섞어서 쓸 수 있어요.
5. 핵심 개념 3 — API Routes (백엔드 기능 내장)
Next.js가 "풀스택 프레임워크"로 불리는 이유가 여기 있어요.
화면(프론트엔드)만 만드는 게 아니라,
같은 프로젝트 안에서 서버 API도 만들 수 있어요.
app/
└── api/
└── hello/
└── route.js → /api/hello 라는 API 주소 생성
// app/api/hello/route.js
export async function GET() {
return Response.json({ message: '안녕하세요!' })
}
이 파일 하나만 만들면 /api/hello로 요청했을 때 저 JSON 데이터를 응답해줘요.
프론트엔드 프로젝트 따로, 백엔드 서버 따로 만들 필요 없이,
한 프로젝트 안에서 화면도 만들고 API도 만드는 거예요.
이전에 정리했던 "풀스택 프레임워크" 개념이 여기서 그대로 적용되는 거예요.
6. 핵심 개념 4 — 자동 이미지 최적화
일반 <img> 태그를 쓰면 이미지 원본 크기를 그대로 불러와요.
이미지가 크면 로딩이 느려지겠죠.
Next.js는 next/image라는 컴포넌트를 제공하는데, 이걸 쓰면 자동으로 처리해줘요.
import Image from 'next/image'
function Profile() {
return (
<Image
src="/profile.jpg"
width={200}
height={200}
alt="프로필 사진"
/>
)
}
이 컴포넌트를 쓰면 화면 크기에 맞는 이미지 사이즈로
자동 변환, 늦게 로딩(lazy loading), 최신 이미지 포맷 변환까지 알아서 처리해줘요.
내가 따로 이미지 압축하고 사이즈 맞추는 작업을 안 해도 되는 거예요.
7. Next.js로 뭘 만들 수 있냐면
개인 블로그 / 포트폴리오 사이트
SSG 방식으로 만들면 로딩도 빠르고 SEO도 잘 잡혀서, 개인 사이트에 특히 잘 맞아요.
쇼핑몰 / 커머스 사이트
상품 목록은 SSG로, 재고나 가격처럼 자주 바뀌는 정보는 실시간으로 가져오는 방식(SSR)으로 섞어서 만들 수 있어요.
대시보드 / 관리자 페이지
로그인 후에만 보이는 페이지라 SEO가 중요하지 않으니, 일반 React처럼 CSR로 만들어도 무방해요.
스타트업 MVP
프론트/백을 한 프로젝트에서 처리할 수 있어서,
빠르게 서비스를 만들어봐야 하는 초기 스타트업들이 정말 많이 선택해요.
실제로 Netflix, TikTok, Twitch, Notion 같은 서비스들도 Next.js를 쓰고 있어요.
8. Next.js 배우기 전에 알아둘 것
Next.js가 처음이라면 순서대로 접근하는 게 좋아요.
① React 기초는 필수
Next.js는 React 위에서 동작해요.
컴포넌트, State, Props 개념이 안 잡혀있으면 Next.js 문서 자체가 어렵게 느껴져요.
지난 글에서 정리한 React 개념을 먼저 익히고 오시는 걸 추천드려요.
② App Router 이해하기
요즘 Next.js는 app 폴더 구조(App Router)를 기본으로 써요.
예전 버전은 pages 폴더 구조(Pages Router)를 썼는데,
지금 새로 시작한다면 app 폴더 구조로 배우는 게 맞아요.
③ 폴더 = 주소 감각 잡기
파일 기반 라우팅이 익숙해지기 전까지는 헷갈릴 수 있어요.
간단한 프로젝트를 하나 만들어서 폴더를 이것저것 만들어보고
주소가 어떻게 바뀌는지 직접 확인해보는 게 좋습니다.
④ 바이브코딩으로 만들어보기
개념이 어느 정도 잡히면 Cursor한테 "Next.js로 간단한 블로그 만들어줘" 요청해보세요.
app 폴더 구조가 어떻게 나오는지, route.js가 어디 생기는지 직접 보면서 익히는 게 제일 빠릅니다.
9. React vs Next.js, 뭘 선택해야 할까
| 구분 |
React |
Next.js |
| 정체 |
UI 라이브러리 |
React 기반 풀스택 프레임워크 |
| 라우팅 |
직접 설정 필요 |
파일 기반 자동 라우팅 |
| SEO |
약함 |
SSR/SSG로 강함 |
| 백엔드 |
별도 서버 필요 |
API Routes 내장 |
| 배포 |
직접 설정 필요 |
Vercel 연동 시 원클릭 |
| 적합한 상황 |
로그인 후 대시보드 등 SEO 필요 없는 앱 |
블로그, 커머스, 대부분의 웹 서비스 |
정리하면 이래요.
단순한 웹 앱, SEO 신경 안 써도 되면 → React
웹 서비스 대부분, SEO나 초기 로딩 속도가 중요하면 → Next.js
요즘은 웹 서비스 만든다고 하면 거의 기본값으로 Next.js를 선택하는 분위기라고 합니다.
바이브코딩으로 "웹사이트 만들어줘" 하면 AI가 Next.js를 먼저 제안하는 것도 이런 이유 때문이에요.
Next.js, 겁낼 필요 없어요
처음엔 SSR, SSG, App Router... 용어가 쏟아져서 막막할 수 있어요.
근데 핵심은 딱 하나예요.
"React로 화면 만드는 방식은 그대로 두고, 라우팅·서버·배포까지 알아서 처리해주는 프레임워크"
이 감각 하나만 잡으면, 나머지 용어들은 실제로 만들어보면서 자연스럽게 익혀져요.
오늘 정리한 내용만 기억해도 됩니다.
- Next.js = React 기반의 풀스택 프레임워크, Vercel이 만듦
- 파일 기반 라우팅 = 폴더 구조가 곧 URL 주소
- SSR/SSG/CSR = 화면을 언제 어디서 그리는지에 따른 렌더링 방식
- API Routes = 같은 프로젝트 안에서 백엔드 API도 함께 개발
- next/image = 이미지 자동 최적화 컴포넌트
- Vercel과 연동하면 배포도 원클릭으로 간단하게
열공하세요! 🙌