Next.js는 풀스택 웹 애플리케이션을 빌드하기 위한 React 프레임워크입니다.
기본적으로 React Component로 사용자 인터페이스를 구성하고 이를 기반으로 번들링, 컴파일 등과 같이 React에 대한 툴링을 추상화 하고 자동으로 구상
Next.js의 주요 기능
Next.js 앱 라우터는 서버 컴포넌트 , Suspense를 통한 스트리밍 , 서버 액션 과 같은 React의 최신 기능을 사용하여 애플리케이션을 구축하기 위한 새로운 모델을 소개합니다 .
특징
terminal 부분에서 npx create-next-app@latest -> @latest 같은 경우 최신 버전을 얘기한다.
npx와 npm의 차이 npm은 패키지 설치 및 관리 및 스크립트를 실행하고 npx 같은 경우 일회성 명령어 실행을 위한 도구이다.
패키지 관리와 일회성 명령어 실행 이런 차이라고 생각하면 좋다.
npx create-next-app@latest <프로젝트이름>
✔ Would you like to use TypeScript? … Yes # 타입스크립트 사용 여부
✔ Would you like to use ESLint? … Yes # ESLint 사용 여부
✔ Would you like to use Tailwind CSS? … Yes # Tailwind CSS 사용 여부
✔ Would you like your code inside a `src/` directory? … No # src/ 디렉토리 사용 여부
✔ Would you like to use App Router? (recommended) … Yes # App Router 사용 여부
✔ Would you like to use Turbopack for next dev? … No # Turbopack 사용 여부
✔ Would you like to customize the import alias (@/* by default)? … No # `@/*` 외 경로 별칭 사용 여부
typescript.json 를 활용하여 typescript에 대한 종속성을 설치하고 활용할 수 있다.
Eslint 가 내장되어 있기 때문에 설정을 통해서 커스텀이 가능하다.
npm run lint로 실행을 하면
stric mode
basic mode
이렇게 구성이 되어 씨고
Strict : Next.js의 기본 ESLint 구성과 더 엄격한 Core Web Vitals 규칙 세트를 포함합니다. 이것은 처음으로 ESLint를 설정하는 개발자에게 권장되는 구성입니다.
기본 : Next.js의 기본 ESLint 구성을 포함합니다.
취소 : ESLint 구성을 포함하지 않습니다. 사용자 정의 ESLint 구성을 설정하려는 경우에만 이 옵션을 선택하세요.
활용이 가능하다.
Nextjs 에는 "path"에 대한 기본지원이 있는 데 절대 경로 module에 대한 설정을 통해 경로 단축이 가능하다.
``
import {Button } from "../../../../components/button"
-> import {Button } from "@/components/button"
이런식으로 절대경로 단축이 가능하고 tsconfig.json에서
{
"compilerOptions": {
"baseUrl": "src/"
}
}
경로를 절대 경로로 구성할 수 있으며
{
"compilerOptions": {
"baseUrl": "src/",
"paths": {
"@/styles/": ["styles/"],
"@/components/": ["components/"]
}
}
}
``
모듈 경로 옵션을 활용하여 매핑 또한 가능하다.
최상위 폴더 구조

왼쪽은 app router 기본인 부분이고 다른 src는 src directory를 사용하는 경우이다.
Next.js
next.config.js nextjs에 대한 구성파일
package.json 프로젝트에 대한 종속성 및 스크립트
instrumentation.ts 앱에 최적화에 대한 계측
middleware.ts nextjs에 middleware
.env 환경 변수
.env.local 환경 변수 local
.env.production 환경 변수 local production
.env.development 환경 변수 dev mode
.eslintrc.json eslint 설정
.gitignore git ignore
next-env.d.ts typescript 선언 파일
tsconfig.json TypeScript에 대한 설정 파일
jsconfig.json JavaScript에 대한 설정 파일
layout .js .jsx .tsx layout 부분 folder 마다 구성
page .js .jsx .tsx 페이지
loading .js .jsx .tsx UI 로딩 중
not-found .js .jsx .tsx UI를 찾을 수 없습니다
error .js .jsx .tsx 오류 UI
global-error .js .jsx .tsx 글로벌 오류 UI
route .js .ts API 엔드포인트
template .js .jsx .tsx 다시 렌더링된 레이아웃
default .js .jsx .tsx 병렬 경로 대체 페이지
folder : route 구분
folder/folder 중첩 라우팅
[folder] : 동적 경로 segment(분절)
[...folder] : 포괄적인 경로 세그먼트
[[...folder]] : 선택 가능한 경로 구간
(folder) : 라우팅에 영향을 주지 않고 경로를 그룹화합니다.
_folder : 라우팅에서 폴더 및 모든 자식 세그먼트를 제외합니다.