03-1. 파일 기반 라우팅 & 페이지

2024. 12. 2. 00:47·스터디/Udemy) NextJS 15 & React

◆ 파일 기반 라우팅

각 페이지는 `page.js`라는 파일에 정의되고, 이 파일은 NextJS에게 페이지를 렌더링해야 한다는 것을 알려줍니다.

이것은 NextJS의 강력한 기능 중 하나이며, 파일 시스템을 사용하여 애플리케이션의 구조를 자연스럽게 관리할 수 있습니다.

 

◆ 파일 시스템을 통한 경로 추가

새로운 경로를 추가하기 위해 `app` 폴더 내에 새 폴더를 만들고 하위에 `page.js` 파일을 생성하면 됩니다.

예를 들어 `/app/about/page.js` 파일을 생성하면 `/about` 페이지가 추가됩니다.

 

◆ 페이지 간 이동

  • Server-side(Backend) : 서버 컴포넌트 함수를 실행하는 과정에서 최종적으로 렌더링될 HTML 코드를 생성합니다.
  • Client-side(Frontend) : 렌더링될 HTML 코드를 수신하고 이를 화면에 표시합니다.
import Link from "next/link";
// ...
<p><Link href="/about">About Us</Link></p>

 

내부 링크 생성 시 `<a>` 태그 대신 `<Link>`를 사용하여 단일 페이지 애플리케이션을 벗어나지 않고 페이지를 업데이트 할 수 있습니다.

다른 페이지로 이동 시, 페이지가 새로고침되지 않고 동적으로 업데이트 됩니다.

 

◆ 레이아웃 작업하기

export const metadata = {
  title: 'NextJS Course App',
  description: 'Your first NextJS app!',
};

export default function RootLayout({ children }) {
  return (
    <html lang="en">
      <body>{children}</body>
    </html>
  );
}

`layout.js` 파일은 하나 이상의 페이지를 감싸는 레이아웃을 정의합니다. NextJS 프로젝트에서 최소한 하나의 루트 `layout.js`가 필요하고, 각 경로마다 `layout.js`를 생성하여 중첩된 레이아웃 페이지를 만들 수도 있습니다.

NextJS에는 `<head>` 대신 `metadata` 객체를 사용하여 페이지의 제목과 설명을 정의할 수 있습니다.

또한, `children`은 레이아웃에 포함된 페이지 컴포넌트를 가리키며, 현재 활성화된 페이지의 컨텐츠를 의미합니다.

 

◆ Favicon 설정하기

`app` 폴더 아래 `icon`이라는 이미지를 넣어 설정할 수 있습니다.

 

◆ 보호된 파일명

NextJS에는 특정 파일명을 가진 일부 파일들이 특별한 용도로 사용됩니다.

  • `page.js` 외에 NextJS에서 기본적인 라우팅 및 에러 처리를 돕는 파일들이 있습니다.
  • `layout.js` : 페이지의 레이아웃을 정의하는 파일. 여러 페이지에서 공통적으로 사용하는 레이아웃을 설정할 때 사용
  • 'not-found.js' : "페이지를 찾을 수 없음" 상태를 처리하는 파일
  • `error.js` : 애플리케이션에서 에러 발생 시, 표시할 오류 페이지를 정의하는 파일
  • `loading.js` : 형제 또는 중첩 페이지가 데이터를 가져오는 동안 표시되는 파일
  • `route.js` : API 경로를 생성하는 파일

이러한 파일명들은 `app` 폴더 내부에서 생성될 때만 특별한 용도로 처리가 됩니다.

 

◆ 동적 경로

NextJS에서 동적 경로는 대괄호를 사용하여 중첩 경로를 생성할 수 있습니다.

ex) /app/blog/[slug]/page.js

대괄호 안에는 동적으로 변하는 값을 나타내는 식별자를 넣을 수 있고, 이를 통해 해당 값에 접근할 수 있습니다.

 

NextJS는 모든 페이지 컴포넌트에 `props` 객체를 전달합니다. 이 `props` 객체에는 다양한 값들이 포함되어 있는데, 그 중 `params` 프로퍼티에는 동적 경로에 포함된 모든 동적 세그먼트 이름과 해당 값이 포함된 객체가 저장되어 있습니다.

이 객체에서 동적 세그먼트에 대한 값을 얻기 위해서는 해당 세그먼트의 이름을 키로 사용하여 접근해야 합니다.

ex) params.slug

 

 

'스터디 > Udemy) NextJS 15 & React' 카테고리의 다른 글

01. NextJS란 무엇이며, 왜 사용하는가?  (2) 2024.11.28
유데미(Udemy) 러닝크루 / [ Next.js 15 & React - 완벽 가이드 ]  (0) 2024.11.18
'스터디/Udemy) NextJS 15 & React' 카테고리의 다른 글
  • 01. NextJS란 무엇이며, 왜 사용하는가?
  • 유데미(Udemy) 러닝크루 / [ Next.js 15 & React - 완벽 가이드 ]
개발자 화진
개발자 화진
https://github.com/HwajinLee3114
  • 개발자 화진
    lhjin.log
    개발자 화진
  • 전체
    오늘
    어제
    • 분류 전체보기 (31)
      • 개발 (10)
        • FE (9)
        • BE (0)
      • Algorithm (0)
      • 기술면접 (4)
      • 스터디 (14)
        • 사이드 프로젝트 (7)
        • Udemy) NextJS 15 & React (3)
        • Udemy) TypeScript with Reac.. (1)
      • ETC (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 태그

    udemy
    NextJS
    프론트엔드
    아키텍처
    pnpm
    유데미 코리아
    프론트엔드 아키텍처
    Zustand
    React
    코딩앙마
    유데미 스터디
    javascript
    자바스크립트
    모노레포
    lazy loading
    Frontend
    multirepo
    supabase
    유데미
    사이드프로젝트
    멀티레포
    티스토리챌린지
    오블완
    인프런
    ThemeProvider
    fe
    Typescript
    Next.js
    vercel
    유데미 러닝크루
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
개발자 화진
03-1. 파일 기반 라우팅 & 페이지
상단으로

티스토리툴바