mir.pe (일반/밝은 화면)
최근 수정 시각 : 2024-01-31 11:17:06

Next.js

웹 프레임워크 기술
{{{#!wiki style="margin:0 -10px"
{{{#!folding [ 펼치기 / 접기 ]
{{{#!wiki style="margin:-5px 0px -10px; word-break:keep-all"
$ 유료 포함 • 취소선 단종 및 중단
<colbgcolor=#f6f6f9,#2f3241> 프론트엔드 <colbgcolor=#fcfcfd,#272935> CSS Bootstrap Tailwind CSS Bulma Foundation Skeleton Pico
JSX React Next.js SolidJS Astro Preact Gatsby Remix Inferno Qwik
JS Angular Svelte Backbone.js jQuery Astro htmx Ember.js Lit 11ty Marko VanJS Alpine.js
Vue Nuxt.js VuePress Gridsome Quasar Astro
Python Reflex
백엔드 Java Spring Struts GWT Grails Jooby Play! Framework Scala
Kotlin Ktor
JS Express NestJS koa Hono fastify
.NET ASP.NET$
PHP Laravel Codeigniter Reasonable phalcon Symfony zend CakePHP FuelPHP Yii Slim PHPixe
Python Django Flask FastAPI
Ruby Ruby on Rails Sinatra
풀스택 JSX Next.js Astro SolidStart Remix Qwik City
JS SvelteKit Fresh Astro Marko
Vue Nuxt.js Quasar Astro
Java Vaadin$
Python Streamlit Reflex
하이브리드 .NET Blazor
Dart Flutter
Kotlin Kotlin Multiplatform
}}}}}}}}} ||

<colcolor=#fff> Next.js
파일:next.svg
종류 <colbgcolor=#fff,#000> 프레임워크
라이선스 MIT 라이선스
개발 Vercel
언어 JavaScript
지원 문법 JSX
렌더링 방식 SSR / SSG
버전 v14.1.0
링크 파일:홈페이지 아이콘.svg 파일:GitHub 아이콘.svg 파일:GitHub 아이콘 화이트.svg
1. 개요2. 상세
2.1. 앱 라우터2.2. 서버 컴포넌트2.3. 서버 액션2.4. 예시
2.4.1. 프로젝트 시작
3. 특징
3.1. 장점3.2. 단점
4. Next.js를 사용하는 기업이나 서비스5. 관련 문서

[clearfix]

1. 개요

Vercel이 개발한 오픈 소스 react 프레임워크.

2. 상세

기본적으로 SSR 위주의 풀스택 기반 프레임워크를 주력으로 성장하고 있으며, 풀스택 프레임워크답게 API 기능 및 서버 컴포넌트를 통한 서버측 기능과, React 컴포넌트를 통한 클라이언트 기능으로 나뉘어 통합 제공하는 프레임워크이다. 현재 node.js 기반의 안정적인 풀스택 프레임워크로 사랑받고 있으며, SSG 방식 또한 제공한다. react 공식 시작하기 문서를 열람할 시, 가장 먼저 이 Next.js 프레임워크를 통한 시작하기가 가장 상단에 표시될 정도로 React의 거의 대표급 프레임워크이다.

파일 페이지 라우터(기존)과 13부터 안정화된 폴더 방식의 앱 라우터(아래 참조) 두가지 라우팅 방식을 지원하며, 라우팅 규칙이 충돌하지 않는 내에서 두 라우팅 방식을 모두 사용할 수 있다. 또한, 앱 라우터가 완전히 안정화한다 해도, 기존 페이지 라우팅 방식은 지속적으로 관리하기 때문에 차기 개발 시에도 취향이나 정책에 맞게 적절히 사용하면 된다.

2.1. 앱 라우터


파일:file-conventions-component-hierarchy.webp
App router.

Next.js 12 버전에서 알파, 베타 테스트를 시작하면서 13.4에서 안정화된 기능으로, 간단히 요약하면, 기존의 파일 기반의 라우팅에서 폴더 기반 라우팅으로 바뀌면서, 여기에 폴더 하위에 여러 기능을 조합하여 사용할 수 있는 강력한 앱 라우팅 기능을 제공한다. 물론 기존 파일 기반의 라우팅을 사용할 수도 있으나, 폴더 기반의 앱 라우팅 기능을 사용하기 위해 폴더 기반의 경로에 아래와 같이 각각의 역할이 담긴 파일명과 js, ts, jsx, tsx 확장자를 작성하면 된다.

현재 Next.js 외에 폴더 기반 라우팅을 채택한 풀스택 프레임워크는 Next.js 보다 더 빨리, 베타 도중 갑작스레 도입하여 정식 출시한 SvelteKit가 있다.

2.2. 서버 컴포넌트


파일:thinking-in-server-components.webp
Server components

react 공식 팀과 협력하고 있는 서버 컴포넌트는 말 그대로 컴포넌트를 서버에서 관리하여 서버가 가지는 기능(DB 및 파일, 보안 등)에 대해 React가 가지는 기능과 결합하여 서비스를 제공하는 매우 강력한 기능으로, 아직 RFC 단계인 이 서버 컴포넌트의 구현체를 Next.js 에서 앞서 제공하고 있다. 이 기술이 React에 정식 출시되면 Remix 등의 다른 React 기반 프레임워크에서도 사용이 가능하다.

2.3. 서버 액션

Forms and Mutations
앱 라우터와 함께 실험적 기능이었다가 14.0.0부터 정식 출시한 기능. 이 기능 또한 서버 컴포넌트와 같이 React에서 공식적으로 제공할 예정인 기능이다.
서버 컴포넌트가 서버로부터 정보를 가져오기 위해 태어났다면, 서버 액션은 반대로 정보를 보내기 위해 태어난 Next.js의 기능.
submit 이벤트 대신 함수를 선언하고, 함수 본문에 'use server' 지시자를 추가하여 서버 함수로 동작함으로써 데이터를 서버 내에서 처리할 수 있도록 하는 기능이다.

이 기능 또한 SvelteKit가 먼저 선보여 안정적인 기능으로 호평받는 중에 있다.

2.4. 예시

2.4.1. 프로젝트 시작

#!syntax sh
npx create-next-app@latest

3. 특징

3.1. 장점

  1. 정적인 구축
    정적으로 빠르게 구축할 수 있다.
  2. 서버 사이드 렌더링 (SSR)
    클라이언트에 주는 부담을 줄인다.

3.2. 단점

  1. 속도
    SSR의 단점으로 서버가 느리면 웹사이트가 기하급수적으로 느려진다.
  2. 너무 엄격한 캐시 정책
    Next.js 13 버전부터 사용자들의 원성을 사고 있는 너무 엄격한 캐시 정책 때문에 앱 라우터 사용을 꺼리는 경우가 많다. 기본적으로 캐시는 앱 최적화의 필수 요소이긴 하지만, 사용자가 원하는 조건에 캐시를 갱신하거나, 아예 캐시가 없어야 하는 시나리오임에도 캐시 정책이 원치 않게 작동하여, 컨텐츠 전달 시 어려움으로, 이로 인한 이슈가 지속적으로 제기되고 있으나, 활발한 커뮤니티 참여를 통해 14.1 부터 고질적인 자체 호스팅 내 유연하지 못한 캐시 문제를 개선하여 직접 캐시 관리를 꾀할 수 있는 설정을 제공함으로써 Redis 같은 DB등을 통한 공유 캐시를 사용할 길이 열렸다.
  3. ~불친절한 오류 안내~
    Next.js 개발 시 오류가 발생했을 때, 내부적인 Stack Trace만 제공하여 다른 SSR 프레임워크 개발 환경 대비 불편한 오류 대응이 드디어 14.1 에 친절하게 오류 위치를 알려주는 방식으로 개선되었다.

4. Next.js를 사용하는 기업이나 서비스

5. 관련 문서



[1] 폴더명에 @로 시작하는 명칭, 주로 인스타그램처럼 팝업이나 모달을 표시하면서 공유를 위해 당 경로를 표시할 때 사용.