본문 바로가기

Next.js를 쓰는 이유가 무엇인가?

codeConnection 2024. 7. 17.

Vite나 CRA가 제공하지 않는 기능들을 제공하는 프레임워크의 성격을 갖고 있기 때문에 많이 사용되는 추세이다.

여러가지가 있겠지만 대표적으로는 아래와 같은 기능을 추가적으로 제공한다.

 

왜 쓰는 지 알고 쓰는 것과, 유행이라서 쓰는 것과는 하늘과 땅 차이라고 생각하여 정리를 하며 고민을 해볼 필요가 있다고 생각했다.

 

Next.js의 차별점

라우팅

라우팅이란, 쉽게 이야기 해서 웹 페이지를 이동하는 것을 말한다. 페이지마다 고유한 URL 세그먼트가 존재해야 페이지 별로 이동할 수가 있는데, 이것을 가능하게 만들어 주는 것이 라우팅 기술이다.

Vite나 CRA를 통해 React 프로젝트를 생성하게 되면 React-Router-Dom이라는 라이브러리를 설치해서 별도의 세팅을 해주어야 한다.

하지만 Next.js에서는 현재 14 버전의 경우 src/app 폴더 내에 폴더만 만들어도 URL segment를 갖게 되며 라우팅이 된다. 이런 점이 개발을 매우 용이하게 해준다.

또한 [id]와 같이 폴더를 만들면 동적인 라우팅을 편하게 만들 수도 있다.

렌더링

이 부분이 가장 핵심적인 기능이 아닐까 생각한다. 기존의 리액트 프로젝트는 클라이언트 사이드 렌더링 방식으로 검색 엔진에서 인덱싱 할 데이터가 없는 빈 div를 하나 브라우저에 던져주고 후에 스타일시트와 자바스크립트를 번들링해서 화면을 그리도록 던져 주는 방식으로 렌더링 하기 때문에 검색엔진이 인덱싱 할 데이터가 없어 SEO에 불리하다.

그러나 Next.js는 서버 사이드 렌더링을 지원하기 때문에 SEO에서 유리할 수 있다.

API 로직 작성

base URL을 서버컴포넌트로 호출하여 API 호출 로직을 직접 작성할 수 있다. 나는 리액트로 개발하면서 이 부분이 가장 크게 체감되었던 부분인데, 일반적인 방법으로는 클라이언트 컴포넌트에서는 API 요청 후 반환되는 값을 개발자 도구에서 감출 수 있는 방법이 없었다. 따라서 민감한 데이터를 다루는 경우 이 부분이 항상 걸렸는데, 이런 경우 Next.js에서는 API 로직을 작성하여 숨길 수도 있다.

또한 어떠한 이유로 fetch 함수 로직의 변경이 필요한 경우, 리액트에서 개발할 때 fetch 함수들을 별도의 API 폴더를 만들고 이 안에 유틸 함수로 전부 작성하면 이와 마찬가지로 유지 보수가 편리하겠지만, 모든 코드를 이렇게 뺄 순 없을 것이다. 그런데 API 파일을 작성하면 이런 백엔드 로직이 변경되었을 때 유지보수가 쉽고 빠르다.

스타일링

TailwindCSS를 기본으로 제공하여 별도의 설정을 복잡하게 할 필요가 없다. 리액트에서 TailwindCSS를 사용할 때 굉장히 복잡했다.

성능 최적화

Next.js에서는 이미지 컴포넌트 등... 이미지나 글꼴을 더 효율적으로 렌더링 될 수 있게 최적화 하는 기능을 제공하기 때문에 같은 소스로 코드를 작성한 리액트 프로젝트 대비 이 기능을 활용했을 때 더 빠른 렌더링을 기대할 수 있다.

타입스크립트 제공

Next.js에서는 타입스크립트를 기본으로 제공하기 때문에 복잡하게 설정할 필요가 없다.

'Programing > Next.js' 카테고리의 다른 글

Next.js의 App Router와 Page Router의 차이  (0) 2024.07.30
Next.js 프로젝트 생성  (0) 2024.07.17
PWA 프로젝트 셋업하기  (0) 2024.07.16
App Routes 만드는 기본 방법  (0) 2024.07.05
App Router란 무엇인가?  (0) 2024.07.05

댓글