Web Dev/React :: 리액트

React :: NextJS 라우팅, 링크, 데이터 fetch 4가지

HJPlumtree 2022. 3. 26. 22:30

Next.js Crash Course를 보고 배운내용

 

 

Next.js

프론트엔드 + 백엔드 콤비네이션으로 Vercel이라는 회사가 만들었다

정적인 사이트도 가능하고, 서버사이드 렌더링 가능

 

중간이상의 리액트 프로젝트,

프로덕션 레벨의 앱을 만들면 Next.js로 만들고 싶을거라고 한다

 

장점

  • API Routes
  • TypeScript나 Sass 사용하고 싶으면 그냥 확장자만 변경하면 된다
  • 디플로이가 쉽다
    Vercel, heroku 등으로 쉽게 푸시
  • ... 등

 

 

라우팅

라우팅 기능이 정말 쉽다

CRA에서 react-router-dom으로 했다면

여기서는 그냥 pages 폴더에 넣으면 끝이다

 

예를 들어 pages폴더 안에 about.js를 만들어주면

localhost:3000/about.js

이렇게 접속이 가능하다

 

다이나믹 라우팅은 []를 이용한다

 

다이나믹 라우팅 예시

<Link href="/article/[id]" as={`/article/${article.id}`}>
  <a className={articleStyles.card}>
    <h3>{article.title} &rarr;</h3>
    <p>{article.excerpt}</p>
  </a>
</Link>

 

Next 다큐먼트 - 라우팅

=> https://nextjs.org/docs/routing/introduction

 

위에서 생성한 동적 링크의 페이지는 pages 폴더에 넣어주면 된다.

즉 article 폴더 안에 [id] 폴더를 넣어주기

 

 

링크 태그

<Link> 태그의 큰 다른점은 아니지만

Next.js에서는 <Link> 태그 안에 <a> 태그도 같이 넣어서 작성하기를 원하는 것 같다

사이트 접근성과 그리고 어쩌면 더 좋은 SEO를 위해서도 그렇다고 한다

<Link href="/about">
  <a>About</a>
</Link>

 

 

Static website

next export를 해주면 out이라는 폴더에 현재 상태의 웹사이트가 만들어진다

뭔가 저장용으로도 사용할 수 있을 것 같다

package.json에 있는 scripts에 추가해서 사용할 수 있다

 

"scripts": {
  // 
  "build": "next build && next export",
  // ... 앞뒤 생략
}

 

 

커스텀 Document

기존의 Document를 덮어 쓸 수 있다

방법은 pages 폴더 안에 _document.js를 넣어주면 된다

그리고 이 코드는 Next 공식에서 제공하는 document 코드

import { Html, Head, Main, NextScript } from 'next/document'

export default function Document() {
  return (
    <Html>
      <Head />
      <body>
        <Main />
        <NextScript />
      </body>
    </Html>
  )
}

 

 

Fetching 데이터 4가지

1. 친숙한 CSR 방법

2. 서버에서 fetch 하는 SSR 방법

3. 빌드시 fetch하고 박제하는 SSG 방법

4. SSG와 SSR을 합친 것처럼 보이는 ISR 방법 

 

우선 Next.js 공식 문서

=> https://nextjs.org/docs/basic-features/data-fetching/overview

 

하지만 역시 예시를 봐야 이해가 갈 듯 싶다

그래서 찾아본 너무 고마운 리소스들

 

Understanding Next.js Data Fetching (CSR, SSR, SSG, ISR)

=> https://theodorusclarence.com/blog/nextjs-fetch-method

 

How to choose between Next.js CSR, SSR, SSG, and ISR

=> https://theodorusclarence.com/blog/nextjs-fetch-usecase

 

Updating Static Next.js Pages Instantly

=> https://joebell.co.uk/blog/updating-static-next-js-pages-instantly

 

컨셉은 알았지만 아직 빈약하니

몇 번 더 읽고 지금 만드는 프로젝트에 어떻게 사용할 지 생각해보고 바로 적용!

 

 

Next by Olesya Grichina @unsplash