리액트 + NextJS : 설치
리액트 + NextJS 기초 입니다.
NextJS는 Vercel이 개발한 오픈 소스 리액트 프레임워크 입니다.
특히 기존의 파일 기반 라우팅에서 폴더 기반 라우팅 + 추가 기능이 합쳐져 가능한 앱 라우팅 기능을 제공 합니다.
또한 SSR 위주의 프레임워크로써 SEO최적화나 클라이언트 속도 향상에 크게 도움이 됩니다.
설치
npm install next@latest react@latest react-dom@latest
package.json
npm 실행 명령어들을 변경해 줍니다.
{
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
}
기본 폴더 구조
app/layout.tsx
export default function RootLayout({children}: {children: React.ReactNode}) {
return (
<html lang="en">
<body>{children}</body>
</html>
)
}
app에 위치한 layout 파일은 전체 html파일을 감싸고 있는 레이아웃이라 생각하면 됩니다.
body안에 선언된 children은 page요소를 의미합니다.
app/page.tsx
export default function Page() {
return <h1>Hello, Next.js!</h1>
}
기본 페이지입니다.
위 파일 두개를 html로 나타내면 아래와 같습니다.
레이아웃안에 페이지가 위치하고 있습니다.
<html lang="en">
<body>
<h1>Hello, Next.js!</h1>
</body>
</html>
앱 라우팅의 파일 규칙
layout.tsx, page.tsx 파일처럼 기본 규칙을 가지고 있는 파일들이 있습니다.
layout.tsx : 현재 라우팅의 레이아웃
loading.tsx : 현재 라우팅의 컴포넌트가 로딩중일 때
page.tsx : 현재 라우팅의 페이지 내용
not-found.tsx : 404 페이지
error.tsx : 에러 페이지
global-error.tsx : 전역 에러 페이지
route.tsx : API endpoint
template.tsx : 재렌더링 레이아웃
default.tsx : 병렬 라우팅 기본 페이지