
이번 교육 과정에서 React 프로젝트를 시작하는 방법으로 CRA와 CNA를 배웠습니다. 이 두 도구의 차이점을 더 깊이 이해하고자 추가적으로 학습하였습니다.
사용자 인터페이스를 만들기 위한 JavaScript 라이브러리
빠른 업데이트와 렌더링 속도로 애플리케이션을 쉽고 빠르게 만들 수 있다. 컴포넌트 기반 구조로 재사용성이 높다는 장점을 지니며, 메타(Meta)의 지원으로 커뮤니티가 활성화되어 있다.
리액트 기반 애플리케이션을 시작할 수 있는 도구는 CRA(Create React App)과 CNA(Create Next App)이 있다. CRA는 일반적인 리액트 애플리케이션 개발에 사용되며, CNA는 Next.js 프레임워크를 기반으로 한 애플리케이션 개발에 사용된다.
Create React App
CRA는 SPA를 구축하는 데 적합하며, CSR 방식만 지원한다. 주로 내부 시스템 또는 SEO가 중요하지 않은 프로젝트에 사용된다.
프로젝트 생성 방법은 아래와 같다.
npx create-react-app 프로젝트이름
리액트 공식 문서에서는 리액트를 웹 애플리케이션의 특정 부분에 적용하거나 전체 애플리케이션을 구축하는 데 사용할 수 있다고 이야기 하고 있다. 그러나 전체 애플리케이션을 리액트로 개발할 때는 개발 효율성과 유지 보수성 측면에서 Next.js와 같은 프레임워크를 사용하기를 권장하고 있다. 자세한 이유는 다음과 같다.
Create Next App
CNA는 Next.js 프레임워크를 기반으로 애플리케이션을 제작할 때 사용하는 도구로, 다양한 렌더링 방식을 지원한다. 마케팅 사이트, 블로그, 전자 상거래 플랫폼과 같이 빠른 로딩 속도와 SEO가 중요한 프로젝트에 주로 사용된다.
프로젝트 생성 방법은 아래와 같다.
npx create-next-app@latest 프로젝트이름
라이브러리와 프레임워크의 주요한 차이는 제어 흐름을 누가 가지고 있는지이다. 라이브러리는 개발자가 직접 흐름을 제어하며, 필요한 부분만 가져다 쓰는 형태이다. 반면, 프레임워크는 흐름 제어를 개발자가 아닌 프레임워크가 직접 한다.

| 구분 | CRA | CNA |
|---|---|---|
| 사용 목적 | SPA (Single Page Application) 개발 | SSR(Server-Side Rendering) 및 SSG(Static Site Generation) 지원 |
| 주요 프레임워크 | React | Next.js (React 기반 프레임워크) |
| 렌더링 방식 | CSR | CSR, SSR, SSG, ISR |
| 사용 용도 | 간단한 SPA나 CSR 중심의 앱 개발 | 블로그, SEO 최적화 |