Programming/next.js

Next.js: React 애플리케이션을 더 빠르고 강력하게

Fillim 2024. 12. 4. 12:17

Next.jsReact 기반의 프레임워크로, 서버사이드 렌더링(SSR), 정적 사이트 생성(SSG), 라우팅 관리 등 React의 한계를 보완하기 위해 설계되었습니다.
이 프레임워크는 성능 향상, SEO 최적화, 그리고 개발자 경험 개선에 중점을 둡니다.

이번 글에서는 Next.js의 주요 특징, 설치, 기본 사용법, 그리고 React와의 차이점을 알아보겠습니다. 😊

 

1. Next.js란 무엇인가요?

Next.js는 React 애플리케이션의 생산성과 성능을 극대화하기 위한 프레임워크입니다.

  • 서버사이드 렌더링(SSR)정적 사이트 생성(SSG)을 지원하여 SEO와 초기 로딩 속도를 개선
  • 파일 기반 라우팅으로 개발 단순화
  • API 라우트와 같은 백엔드 기능 포함

 

2. Next.js의 주요 특징

1) 서버사이드 렌더링(SSR)

Next.js는 서버에서 React 컴포넌트를 렌더링하여 클라이언트에 HTML을 전달합니다.

  • 초기 로딩 속도 향상
  • 검색 엔진 최적화(SEO) 개선

2) 정적 사이트 생성(SSG)

미리 렌더링된 HTML을 정적으로 제공하여 초고속 로딩을 지원합니다.

3) 파일 기반 라우팅

폴더와 파일 구조만으로 라우팅을 자동 설정할 수 있습니다.

4) API 라우트

서버 없이도 백엔드 기능(API)를 구현할 수 있습니다.

 

3. Next.js 설치 및 설정

설치 명령어

Next.js 프로젝트는 다음 명령어로 쉽게 생성할 수 있습니다:

npx create-next-app@latest my-next-app
cd my-next-app
npm run dev

실행 결과

localhost:3000에서 기본 Next.js 애플리케이션이 실행됩니다.

 

4. Next.js 기본 사용법

1) 페이지 생성

Next.js는 pages 폴더의 파일 구조를 기반으로 라우팅을 자동 설정합니다.

예제: /pages/index.js

export default function Home() {
  return <h1>Welcome to Next.js!</h1>;
}

예제: /pages/about.js

export default function About() {
  return <h1>About Us</h1>;
}

URL

  • /pages/index.js → /
  • /pages/about.js → /about

 

2) 서버사이드 렌더링 (SSR)

getServerSideProps

getServerSideProps를 사용하면 서버에서 데이터를 가져와 페이지에 전달할 수 있습니다.

export async function getServerSideProps() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  const data = await res.json();

  return { props: { posts: data } };
}

export default function Home({ posts }) {
  return (
    <div>
      <h1>Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

 

3) 정적 사이트 생성 (SSG)

getStaticProps

getStaticProps를 사용하여 빌드 시 데이터를 가져오고 정적 HTML을 생성합니다.

export async function getStaticProps() {
  const res = await fetch('https://jsonplaceholder.typicode.com/posts');
  const data = await res.json();

  return { props: { posts: data } };
}

export default function Home({ posts }) {
  return (
    <div>
      <h1>Posts</h1>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>{post.title}</li>
        ))}
      </ul>
    </div>
  );
}

 

4) API 라우트

/pages/api 폴더에서 API 라우트를 설정할 수 있습니다.

예제: /pages/api/hello.js

export default function handler(req, res) {
  res.status(200).json({ message: 'Hello, Next.js!' });
}

/api/hello로 API 요청 가능

 

 

5. Next.js와 React의 차이점

기능 React Next.js
렌더링 방식 클라이언트 사이드 렌더링(CSR) SSR, SSG, CSR 모두 지원
SEO 최적화 추가 작업 필요 기본 지원
라우팅 React Router 등 추가 설치 필요 파일 기반 라우팅
백엔드 기능 미지원 API 라우트 제공

 

6. Next.js 사용 시 주의사항

  1. SSR/SSG vs CSR
    • 모든 페이지에 SSR을 사용하면 서버 부하가 커질 수 있습니다.
    • 페이지 특성에 따라 적절한 렌더링 방식을 선택하세요.
  2. 데이터 보안
    • 서버사이드에서만 민감한 데이터를 처리하도록 설정하세요.
  3. 정적 파일 제공
    • public 폴더를 활용해 정적 파일을 쉽게 관리할 수 있습니다.

 

Next.js는 React의 강력함에 SEO와 성능 최적화를 더해주는 도구입니다.
이 글을 참고하여 Next.js를 프로젝트에 적용하고 웹 애플리케이션의 수준을 한 단계 높여보세요!