React | Next.js |
---|---|
기본적으로 CSR만 지원 | CSR, SSR, SSG, ISR 등 다양한 렌더링 방식을 지원 |
초기 로딩 시, 비어 있는 HTML이 전송되고, 자바스크립트가 실행된 후 콘텐츠가 표시됨 | 페이지별로 적합한 렌더링 전략을 선택할 수 있음 |
SEO에 불리하며, 초기 로딩 성능이 상대적으로 느릴 수 있음 | SEO 친화적이며, 초기 로딩 성능을 개선할 수 있음 |
React | Next.js |
---|---|
자체 라우팅 기능이 없어 React Router와 같은 추가 라이브러리가 필요 | 파일 시스템 기반의 내장 라우팅을 제공 |
라우팅 설정을 수동으로 구성해야 함 | pages 또는 app 디렉토리에 파일을 생성하면 자동으로 경로가 설정됨 |
동적 라우팅, 중첩 라우팅, 라우트 그룹 등 고급 기능을 지원 |
React | Next.js |
---|---|
프로젝트 시작을 위해 Webpack, Babel 등의 도구 구성이 필요 | |
(Create React App을 사용하면 간소화되지만 여전히 제한적) | 즉시 사용 가능한 개발 환경을 제공 |
최적화, 코드 분할 등을 직접 구성해야 함 | 즉시 사용 가능한 개발 환경을 제공 |
Hot Module Replacement(HMR) 와 Fast Refresh 를 지원 |
React | Next.js |
---|---|
데이터 페칭을 위한 특별한 패턴이 없음 | 다양한 데이터 페칭 방법을 제공 |
◦ getServerSideProps : 서버 사이드 렌더링 |
|
◦ getStaticProps : 빌드 시 데이터 페칭 |
|
◦ getStaticPaths : 동적 경로 생성 |
|
◦ App Router 에서는 React Suspense 와 통합된 데이터 페칭 |
|
useEffect 훅이나 외부 라이브러리를 사용하여 클라이언트에서 데이터를 가져옴 |
서버 컴포넌트에서 직접 데이터베이스나 API 호출 가능 |
React | Next.js |
---|---|
정적 파일만 생성하므로 정적 호스팅 서비스에 배포 | 정적 사이트와 서버 사이드 렌더링을 모두 지원 |
서버 기능이 필요한 경우 별도의 백엔드 서버가 필요 | 빌드 시 최적화된 정적 파일과 서버 컴포넌트를 생성 |
Vercel 과 같은 플랫폼에 쉽게 배포 가능 |
React | Next.js |
---|---|
백엔드 API는 별도로 개발해야 함 | API 라우트 기능을 통해 동일한 프로젝트 내에서 API를 개발 가능 |
프론트엔드와 백엔드를 분리해서 관리 | 서버리스 함수로 자동 배포됨 |
React | Next.js |
---|---|
성능 최적화를 직접 구현해야 함 | 자동 이미지 최적화, 폰트 최적화, 코드 분할 등을 기본으로 제공 |
코드 분할, 지연 로딩 등을 수동으로 설정해야 함 | 성능 분석 도구와 최적화 제안을 제공 |