- Next.js 란 무엇인가?
- 라이브러리 vs 프레임워크: 누가 더 자유로울까?
- 사전 렌더링: CSR의 단점을 극복한 히어로
- Page Router: Next.js만의 라우팅 시스템
- 1. /home.js 파일을 만들면 /home 경로가 바로 생깁니다.
- 2. about폴더에 index.tsx파일로 만들면 /about 경로가 생깁니다.
- 3. 동적 경로(Dynamic Routes)도 지원합니다.
- Next.js 라우팅: Page Router의 이해
- Next.js Page Router로 프로젝트 시작하기
- 01. Next 앱 생성
- 02. 개발 서버 실행
- 03. Next.js의 기본 구성 파일들

Next.js 란 무엇인가?
Next.js는 React.js의 확장판 느낌이 물씬 나는 프레임워크입니다.
“라이브러리가 아니라고?” 맞아요, 프레임워크예요. 이게 왜 중요하냐면, 개발자와 코드의 관계가 완전히 달라집니다.
라이브러리 vs 프레임워크: 누가 더 자유로울까?
- 프레임워크는 이렇게 말하죠:
“내가 틀을 다 정해놨으니 너는 그 안에서 놀아. 내가 다 해줄게!”
덕분에 모든 기능이 기본 제공되지만, 대신 자유도는 낮아집니다. - 반면 라이브러리는:
“자, 이거 쓰고 싶은 대로 써. 네 마음대로 만들어봐!”
자유도는 최고지만, 대신 직접 만들어야 할 게 많습니다.
Next.js는 이 프레임워크의 특성을 활용해 사전 렌더링 같은 고급 기술을 쉽게 사용할 수 있도록 만들어졌습니다.
사전 렌더링: CSR의 단점을 극복한 히어로
Client-Side Rendering(CSR) 방식은 브라우저가 직접 화면을 그리는 방식이에요.
하지만... 느립니다. 특히, 유저가 첫 화면을 보기까지 기다리는 시간이 길죠.
Next.js는 사전 렌더링으로 이걸 개선했습니다. 간단히 작동 원리를 볼까요?

- 유저가 서버에 접속 요청을 보냅니다.
“안녕하세요! 페이지 좀 주세요~” - 서버가 JS를 실행하며 사전에 렌더링 합니다.
“HTML 뼈대 여기 있어요!” - 브라우저가 HTML을 받고 유저에게 보여줍니다.
“보이긴 보이죠? 하지만 아직 상호작용은 안 돼요.” - 서버에서 JS 번들을 추가로 받아와 실행합니다.
이제야 유저가 페이지와 상호작용할 수 있어요!
이 모든 과정을 통해 유저는 화면을 빨리 볼 수 있게 되고, 페이지 로드의 첫인상(FCP)이 훨씬 좋아져요.
*FCP(First Contentful Paint)
: "요청시작" 시점으로부터 콘텐츠가 화면에 처음 나타나는 데 걸리는 시간
[요청시작↔콘텐츠 렌더] > 프론트성능을 대표할 정도로 중요한 지표

*TIL(Time to Interactive)
: 사용자가 페이지에 접속한 후, 해당 페이지와 완전히 상호작용할 수 있는 상태가 되는 데 걸리는 시간
[요청시작↔콘텐츠 렌더] > 프론트성능을 대표할 정도로 중요한 지표

Page Router: Next.js만의 라우팅 시스템
Next.js는 파일명 기반의 라우팅을 제공합니다. 페이지를 만들고 싶다면 그냥 pages 폴더에 파일을 만들면 끝!

1. /home.js 파일을 만들면 /home 경로가 바로 생깁니다.
2. about폴더에 index.tsx파일로 만들면 /about 경로가 생깁니다.
3. 동적 경로(Dynamic Routes)도 지원합니다.
- [id].js: /item/123처럼 단일 ID를 받을 수 있습니다.
- [...id].js: /item/123/456/789처럼 여러 ID를 배열로 받을 수 있습니다.
- Catch-All Segments
- /item/123/456/789 같은 경로를 배열로 받아옵니다.
- 반드시 하나 이상의 세그먼트가 필요합니다. - [[...id]].js: 인덱스 없이 /item 경로도 접속 가능합니다.
- Optional Catch-All Segments
- /item 경로처럼 세그먼트가 없어도 기본적으로 접근 가능합니다.
- 추가 세그먼트가 있을 경우 배열로 처리됩니다.
* URL이 여러 부분으로 나뉘어 있을 때, /로 구분된 각각의 단위를 세그먼트( Segment )라고 부릅니다.
Next.js 라우팅: Page Router의 이해
Page Router는 Next.js의 라우팅 시스템 중 하나로, Next.js 초기 버전부터 사용된 방식입니다.
파일 기반 라우팅을 사용하여 간단하고 직관적인 라우팅 설정이 가능하다는 특징이 있습니다.
다만, 이 라우팅 방식은 현재 Next.js 최신 버전에서는 잘 사용되지 않는 추세입니다.
왜 잘 사용되지 않을까?
- Next.js는 App Router라는 새로운 라우팅 시스템을 도입하며, 더 유연하고 강력한 기능(예: 서버 구성 컴포넌트, 동적 렌더링)을 제공하기 시작했습니다.
- Page Router는 구버전으로 간주되며, 최신 프로젝트에서는 주로 App Router를 권장합니다.
장점 | 단점 |
간단하고 직관적 : 파일 이름과 경로가 1:1로 매핑되므로, 구조를 이해하기 쉽습니다 |
유연성 부족 : 복잡한 라우팅 요구사항을 처리하기에는 제한적일 수 있습니다. |
빠른 학습 곡선 : 별도의 라우팅 설정 없이 폴더와 파일만으로 구현 가능. |
폴더 구조 의존 : 프로젝트가 커지면 폴더 관리가 복잡해질 수 있습니다. |
Next.js Page Router로 프로젝트 시작하기
React.js 는 페이스북에서 개발한 사용자 인터페이스 라이브러리입니다.
현재 많은 프론트엔드 개발자들이 사용하고 있는 인기 있는 라이브러리입니다.
01. Next 앱 생성
아래의 명령어를 입력 후, 프로젝트에 맞게 설정을 합니다.
npx create-next-app@14 [패키지 이름]

*npx는 Node Package Executor : https://www.npmjs.com/ 에서 최신버전의 라이브러리를 바로 다운로드하는 명령어
02. 개발 서버 실행
아래의 명령어로 서버를 실행하면 아래와 같은 초기 실행 페이지가 나타납니다.
npm run dev

03. Next.js의 기본 구성 파일들
프로젝트를 처음 생성하면 **_app.tsx**와 _document.tsx 파일을 볼 수 있습니다.
이 파일들은 개별 페이지가 아니라,
Next.js 앱의 공통 로직, 레이아웃, 데이터를 관리하기 위해 필요한 중요한 역할을 합니다.

- _app.tsx
- 모든 페이지의 공통 로직을 관리하는 파일. React의 App 컴포넌트 같은 역할이에요. - _document.tsx
- HTML 레이아웃에 공통적으로 적용할 코드를 작성하는 곳. React의 index.html 역할이라고 보면 돼요. - next.config.mjs
- Next.js 설정 파일이에요.
- reactStrictMode는 개발 편의를 위해 false로 설정하는 것을 추천합니다.
'DEVELOPMENT > Next.js' 카테고리의 다른 글
[Next.js] Page Router? Next.js에서 클릭 몇 번이면 끝난다고! 1탄 (3) | 2025.01.22 |
---|