← 홈

Next.js

⌘K
🤖
Claude Code AI 도구
🤗
Hugging Face AI 도구
🦜
LangChain AI 도구
🧠
Keras AI 도구
🦙
Ollama AI 도구
🐍
Python 프로그래밍 언어
🟨
JavaScript 프로그래밍 언어
🔷
TypeScript 프로그래밍 언어
⚛️
React 프로그래밍 언어
🐹
Go 프로그래밍 언어
🦀
Rust 프로그래밍 언어
📊
MATLAB 프로그래밍 언어
🗄️
SQL 프로그래밍 언어
⚙️
C/C++ 프로그래밍 언어
Java 프로그래밍 언어
🟣
C# 프로그래밍 언어
🍎
Swift 프로그래밍 언어
🟠
Kotlin 프로그래밍 언어
Next.js 프로그래밍 언어
💚
Vue.js 프로그래밍 언어
🔥
Svelte 프로그래밍 언어
🎨
Tailwind CSS 프로그래밍 언어
💚
Node.js 프로그래밍 언어
🌐
HTML 프로그래밍 언어
🎨
CSS/SCSS 프로그래밍 언어
🐘
PHP 프로그래밍 언어
💎
Ruby 프로그래밍 언어
🔴
Scala 프로그래밍 언어
📊
R 프로그래밍 언어
🎯
Dart 프로그래밍 언어
💧
Elixir 프로그래밍 언어
🌙
Lua 프로그래밍 언어
🐪
Perl 프로그래밍 언어
🅰️
Angular 프로그래밍 언어
🚂
Express.js 프로그래밍 언어
🐱
NestJS 프로그래밍 언어
🛤️
Ruby on Rails 프로그래밍 언어
◼️
GraphQL 프로그래밍 언어
🟪
Haskell 프로그래밍 언어
💚
Nuxt.js 프로그래밍 언어
🔷
SolidJS 프로그래밍 언어
htmx 프로그래밍 언어
💻
VS Code 개발 도구
🧠
PyCharm 개발 도구
📓
Jupyter 개발 도구
🧠
IntelliJ IDEA 개발 도구
💚
Neovim 개발 도구
🔮
Emacs 개발 도구
🔀
Git DevOps & CLI
🐳
Docker DevOps & CLI
☸️
Kubernetes DevOps & CLI
☁️
AWS CLI DevOps & CLI
🔄
GitHub Actions DevOps & CLI
🐧
Linux 명령어 DevOps & CLI
💻
Bash 스크립팅 DevOps & CLI
🌐
Nginx DevOps & CLI
📝
Vim DevOps & CLI
🔨
Makefile DevOps & CLI
🧪
Pytest DevOps & CLI
🪟
Windows DevOps & CLI
📦
패키지 매니저 DevOps & CLI
🍎
macOS DevOps & CLI
🏗️
Terraform DevOps & CLI
🔧
Ansible DevOps & CLI
Helm DevOps & CLI
🔨
Jenkins DevOps & CLI
🔥
Prometheus DevOps & CLI
📊
Grafana DevOps & CLI
💻
Zsh DevOps & CLI
🐟
Fish Shell DevOps & CLI
💙
PowerShell DevOps & CLI
🔄
Argo CD DevOps & CLI
🔀
Traefik DevOps & CLI
☁️
Azure CLI DevOps & CLI
☁️
Google Cloud CLI DevOps & CLI
📟
tmux DevOps & CLI
🔧
jq DevOps & CLI
✂️
sed DevOps & CLI
📊
awk DevOps & CLI
🌊
Apache Airflow DevOps & CLI
🔢
NumPy 데이터베이스 & 데이터
🐼
Pandas 데이터베이스 & 데이터
🔥
PyTorch 데이터베이스 & 데이터
🧠
TensorFlow 데이터베이스 & 데이터
📈
Matplotlib 데이터베이스 & 데이터
🐘
PostgreSQL 데이터베이스 & 데이터
🐬
MySQL 데이터베이스 & 데이터
🍃
MongoDB 데이터베이스 & 데이터
🔴
Redis 데이터베이스 & 데이터
🔍
Elasticsearch 데이터베이스 & 데이터
🤖
Scikit-learn 데이터베이스 & 데이터
👁️
OpenCV 데이터베이스 & 데이터
Apache Spark 데이터베이스 & 데이터
🪶
SQLite 데이터베이스 & 데이터
Supabase 데이터베이스 & 데이터
🔵
Neo4j 데이터베이스 & 데이터
📨
Apache Kafka 데이터베이스 & 데이터
🐰
RabbitMQ 데이터베이스 & 데이터
🔤
Regex 유틸리티
📝
Markdown 유틸리티
📄
LaTeX 유틸리티
🔐
SSH & GPG 유틸리티
🌐
curl & HTTP 유틸리티
📜
reStructuredText 유틸리티
🚀
Postman 유틸리티
🎬
FFmpeg 유틸리티
🖼️
ImageMagick 유틸리티
🔍
ripgrep 유틸리티
🔍
fzf 유틸리티
📗
Microsoft Excel 오피스 애플리케이션
📘
Microsoft Word 오피스 애플리케이션
📙
Microsoft PowerPoint 오피스 애플리케이션
📝
한컴 한글 한컴오피스
📽️
한컴 한쇼 한컴오피스
📊
한컴 한셀 한컴오피스
📄
Google 문서 Google Workspace
📊
Google 스프레드시트 Google Workspace
📽️
Google 프레젠테이션 Google Workspace
🔌
Cadence Virtuoso EDA & 하드웨어
⚙️
Synopsys EDA EDA & 하드웨어
💎
Verilog & VHDL EDA & 하드웨어
LTSpice EDA & 하드웨어
🔧
KiCad EDA & 하드웨어
📝
Notion 생산성 도구
💎
Obsidian 생산성 도구
💬
Slack 생산성 도구
🎮
Discord 생산성 도구
🎨
Figma 디자인 도구
📘
Confluence Atlassian
📋
Jira Atlassian
🃏
Jest 테스팅
Vitest 테스팅
🎭
Playwright 테스팅
🌲
Cypress 테스팅
🌐
Selenium 테스팅
💙
Flutter 모바일 개발
📱
React Native 모바일 개발
🍎
SwiftUI 모바일 개발
📱
Expo 모바일 개발
🐍
Django 웹 프레임워크
FastAPI 웹 프레임워크
🌶️
Flask 웹 프레임워크
🍃
Spring Boot 웹 프레임워크
🍸
Gin 웹 프레임워크
Vite 빌드 도구
📦
Webpack 빌드 도구
esbuild 빌드 도구
🐘
Gradle 빌드 도구
🪶
Maven 빌드 도구
🔧
CMake 빌드 도구
🎮
Unity 게임 개발
🤖
Godot 게임 개발
🔌
Arduino 임베디드 & IoT
🔍
Nmap 보안
🐕
Datadog 모니터링
📖
Swagger/OpenAPI 문서화
검색 결과가 없습니다
EN KO

📂 App Router (Next.js 13+)

📄 파일 규칙

page.tsx 라우트 UI 컴포넌트
layout.tsx 공유 레이아웃 래퍼
loading.tsx 로딩 UI (Suspense)
error.tsx 에러 경계
not-found.tsx 404 페이지
template.tsx 다시 렌더링되는 레이아웃
default.tsx 병렬 라우트 폴백
route.ts API 라우트 핸들러

🔗 라우트 세그먼트

app/page.tsx / 라우트
app/about/page.tsx /about 라우트
app/[id]/page.tsx 동적 세그먼트
app/[...slug]/page.tsx Catch-all 세그먼트
app/[[...slug]]/page.tsx 선택적 catch-all
app/(group)/page.tsx 라우트 그룹 (URL 없음)
app/@modal/page.tsx 병렬 라우트 (슬롯)
app/(.)modal/page.tsx 인터셉팅 라우트

🧭 내비게이션

<Link href="/about">About</Link> 클라이언트 사이드 내비게이션
useRouter() 프로그래밍 방식 내비게이션
router.push("/path") 경로로 이동
router.replace("/path") 현재 히스토리 교체
router.back() 뒤로 가기
router.refresh() 서버 컴포넌트 새로고침
redirect("/path") 서버 사이드 리다이렉트

🧩 서버 & 클라이언트 컴포넌트

🖥️ 서버 컴포넌트

async function Page() { } 비동기 서버 컴포넌트
const data = await fetch(url) 컴포넌트에서 fetch
import { cookies } from "next/headers" 쿠키 접근
import { headers } from "next/headers" 헤더 접근
const searchParams = props.searchParams 검색 매개변수 접근
const params = props.params 라우트 매개변수 접근

💻 클라이언트 컴포넌트

"use client" 클라이언트 컴포넌트로 표시
useState() React 상태 사용
useEffect() 이펙트 사용
onClick, onChange, ... 이벤트 핸들러
usePathname() 현재 경로명
useSearchParams() URL 검색 매개변수
useParams() 동적 라우트 매개변수

📡 데이터 페칭

⚙️ Fetch 옵션

fetch(url) 기본 (캐시됨)
fetch(url, { cache: "no-store" }) 캐싱 없음
fetch(url, { cache: "force-cache" }) 강제 캐시
fetch(url, { next: { revalidate: 60 } }) 60초 후 재검증
fetch(url, { next: { tags: ["posts"] } }) 재검증용 태그

🔄 재검증

export const revalidate = 60 시간 기반 재검증
revalidatePath("/path") 경로 재검증
revalidateTag("tag") 태그로 재검증
export const dynamic = "force-dynamic" 동적 렌더링 강제
export const dynamic = "force-static" 정적 렌더링 강제

서버 액션

"use server" 서버 액션으로 표시
async function action(formData) { } 서버 액션 함수
<form action={serverAction}> 액션이 있는 폼
formData.get("field") 폼 필드 얻기
useFormStatus() 폼 대기 상태
useFormState(action, initial) 액션 상태

🔌 API 라우트

📡 라우트 핸들러

export async function GET(request) { } GET 핸들러
export async function POST(request) { } POST 핸들러
export async function PUT(request) { } PUT 핸들러
export async function DELETE(request) { } DELETE 핸들러
export async function PATCH(request) { } PATCH 핸들러

📨 요청 & 응답

request.json() JSON 본문 파싱
request.formData() 폼 데이터 파싱
request.nextUrl.searchParams 검색 매개변수 얻기
NextResponse.json(data) JSON 응답
NextResponse.redirect(url) 리다이렉트 응답
new Response(body, { status }) 커스텀 응답

⚙️ 미들웨어 & 설정

🔧 미들웨어

middleware.ts 미들웨어 파일 (루트)
export function middleware(request) { } 미들웨어 함수
NextResponse.next() 라우트로 계속
NextResponse.rewrite(url) URL 재작성
export const config = { matcher: [] } 경로 매처

📝 next.config.js

images: { domains: [] } 이미지 도메인
redirects: async () => [] 리다이렉트 설정
rewrites: async () => [] 리라이트 설정
headers: async () => [] 커스텀 헤더
env: { KEY: value } 환경 변수

🚀 최적화

🖼️ 이미지 & 폰트

import Image from "next/image" 최적화된 이미지
<Image src="" width={} height={} alt="" /> 이미지 컴포넌트
fill 컨테이너 채우기
priority 이미지 프리로드
import { Inter } from "next/font/google" Google 폰트
import localFont from "next/font/local" 로컬 폰트

🏷️ 메타데이터

export const metadata = { } 정적 메타데이터
export function generateMetadata({ params }) { } 동적 메타데이터
title: "Page Title" 페이지 제목
description: "..." 메타 설명
openGraph: { } Open Graph
icons: { icon: "/favicon.ico" } 파비콘

💡 팁 & 모범 사례

유용한 팁

  • 기본적으로 서버 컴포넌트 사용, 필요할 때만 클라이언트
  • 데이터 페칭을 사용하는 컴포넌트와 함께 배치
  • 스트리밍 UI에 loading.tsx 사용
  • 캐시 가능한 동적 콘텐츠에 ISR 활용
  • URL에 영향 없이 정리하려면 라우트 그룹 사용
  • 뮤테이션에 API 라우트보다 서버 액션 선호