Next.js - 소개 및 특징

carrot·2021년 10월 14일
6

Nextjs

목록 보기
1/15
post-thumbnail

Next.js

리액트 기반의 프레임워크. 리액트 개발자에게 생산성과 편의성을 증대시켜 주며 이는 곧 React의 단점(SPA의 단점)을 커버해 준다는 것을 의미합니다.

React의 단점(SPA의 단점)

1. SPA의 장점

  1. 리액트는 SPA로서 사이트에 접속할 때 하나의 페이지를 불러옵니다.
  2. 페이지를 불러올 때 필요한 모든 JS 파일을 한번에 불러옵니다.
  3. SPA는 페이지를 이동하게 되면, 받아온 파일을 이용하여 UI를 변화시키고, 필요한 데이터는 서버에서 JSON 형태로 받아서 UI를 빠르게 변화시킬 수 있습니다.
  4. 이러한 특징으로 인하여 사용자 경험(UX)에 좋습니다.

2. SPA의 단점

이러한 특징은 SPA의 장점이자 단점이 되는데, 모든 JS 코드를 불러와야 하기 때문에 처음 페이지를 불러올 때 시간이 오래 걸리게 됩니다.
또한 SPA는 검색 엔진 최적화(SEO)에 좋지 않습니다.

  • 검색 엔진 봇이 사이트에 방문하였을 때 콘텐츠를 제공하지 못하여 사이트를 파악하는 데 어려움이 있습니다.

이 두 가지의 문제는 서버사이드렌더링(SSR)을 사용함으로써 해결할 수 있습니다.

3. 서버사이드렌더링(SSR)

  • SSR은 사이트에 접속할 때 렌더링된 html을 불러오게 됩니다. 필요한 JS 파일을 불러올 때까지 반응은 하지 않지만, 빠르게 화면을 보일 수 있기에 속도가 빨라 보이게 됩니다.
  • 검색 엔진 봇에 렌더링 된 html을 제공하여 SEO에 좋습니다.
  • 하지만 SSR은 페이지 이동 시 새로운 페이지를 요청하기 때문에 페이지 이동시 깜빡임이 존재하고, 템플릿을 중복해서 로딩하며 이는 서버에 부담을 주기 때문에 성능상 좋지 않다는 단점을 가지고 있습니다.

Next.js는 SPA와 SSR의 단점을 해결하기 위해서 리액트에 서버사이드렌더링 기능을 더하여 SPA와 SSR의 장점을 가질 수 있게 됩니다.

  • 리액트에 SSR 기능을 추가하려면 웹 서버를 만들어 주어야 하고, 웹팩 설정, 데이터 로딩, 코드 스플리팅 등 복잡한 과정을 필요로 합니다.
  • Next.js를 통해 이러한 것들을 설정하지 않고 사용할 수 있게 됩니다.

이러한 개발 환경을 설정하는 번거로움을 줄일 수 있는 것이 Next.js의 특징 중 하나입니다.

Next.js의 특징

Next.js의 특징들을 살펴봅니다.

1. 사전 렌더링 및 서버 사이드 렌더링

  • Next.js는 기본적으로 빌드시에 만든 모든 페이지를 미리 렌더링 합니다.
    • 이렇게 만들어진 HTML은 처음 페이지를 불러올 때 사용자에게 빠르게 보이게 됩니다.
    • HTML이 미리 렌더링 되어 SEO에도 좋습니다.
  • HTML을 불러온 후에는 페이지에 필요한 최소한의 JS 코드를 불러와 페이지를 사용할 수 있게 됩니다.
    • 서버의 데이터를 필요로 하는 페이지에 대해서는 요청 시에 서버 사이드 렌더링을 통하여 HTML을 생성하게 됩니다.

2. Hot Code Reloading을 지원하는 개발 환경

Next 개발 환경에서는 코드 변경 사항이 저장되면 응용 프로그램을 자동으로 다시 로드합니다. 개발 모드일 때 소스코드를 저장하면 오른쪽 하단에 애니메이션 아이콘이 생기며, 이는 Next가 응용 프로그램을 컴파일 하고 있다는 것을 의미합니다.

3. 자동 코드 분할

자동 코드 분할 기능 덕분에 코드의 모든 가져오기가 번들로 묶여 각 페이지와 함께 제공됩니다. 결과적으로, 불필요한 코드가 페이지에 로드되지 않게 됩니다.

4. 설정

Next는 기본적으로 웹팩과 바벨을 사용하고 있습니다. 웹팩과 바벨을 사용하여 서버 사이드 렌더링 및 개발에 필요한 설정이 이미 되어 있어 빠르게 개발을 시작할 수 있습니다. 사용하고싶은 플러그인 또한 손쉽게 추가하여 사용할 수 있도록 지원하고 있습니다.

5. Typescript 내장

타입스크립트는 자바스크립트의 superset인 오픈소스 프로그래밍 언어입니다. 기존의 자바스크립트 문법을 그대로 사용하면서 정적 타입 언어의 장점을 가질 수 있습니다.
Next를 타입스크립트와 함께 사용할 때 타입 지원을 통해 편리함과 안정성을 얻을 수 있습니다.
Next는 타입스크립트 설정을 따로 할 필요 없이 사용할 수 있으며 타입스크립트를 지원하고 있습니다.

6. 파일기반 네비게이션 기능

리액트에서는 route를 위해서 react-router라는 라이브러리를 사용하여 라우팅 설정을 해주어야 합니다. 그로 인해 페이지의 경로에 대하여 직접 설정을 해주어야 하였지만, Next는 파일 시스템 기반 라우팅을 사용합니다. 폴더의 경로에 따라 페이지의 경로가 설정되어 구축이 빠르고 관리가 편리하다는 장점이 있습니다.

7. styled-jsx 지원

Next는 자체 CSS-In-JS인 styled-jsx를 지원합니다. 기본으로 제공하는 기능이기 때문에 스타일을 서버 사이드 렌더링 하기 위한 설정이 필요하지 않습니다.

profile
당근같은사람

0개의 댓글