React5분
CRA vs VITE
2024년 11월 16일
⚔️ CRA vs Vite
React 프로젝트를 생성할 때 가장 많이 사용하는 도구 두 가지
👉 Create React App (CRA) vs Vite
🏗️ CRA (Create React App)
- Meta(구 Facebook)에서 만든 기본적인 React 프로젝트 생성기
- 내부적으로 Webpack을 사용하여 번들링
- 설정이 자동화되어 있어 초심자에게 익숙
- 프로젝트 구조와 빌드 환경이 비교적 무거움
⚡ Vite
- 차세대 프론트엔드 빌드 도구
- ESBuild + Rollup 기반으로 CRA보다 훨씬 빠른 번들링 속도 제공
- *모듈 단위 핫 리로딩(HMR)**을 통해 개발 중 빠른 반영
- React 뿐만 아니라 Vue, Svelte 등 다양한 프레임워크 지원
🧠 CRA vs Vite 비교
| 항목 | CRA (Create React App) | Vite |
|---|---|---|
| 기본 번들러 | Webpack | ESBuild + Rollup |
| 프로젝트 생성 속도 | 느림 | 매우 빠름 ⚡ |
| 핫 리로딩 속도 | 느림 | 빠름 |
| 빌드 속도 | 느림 | 빠름 |
| 설정 커스터마이징 | 어렵거나 eject 필요 | 쉬움 (Vite 설정 파일로 가능) |
| React 지원 | 기본 지원 | Plugin 형태로 React 사용 |
| 사용성 | 보편적, 안정성 | 최신 트렌드, 경량화 |
🧪 JavaScript (.js) vs JSX (.jsx)
| 항목 | .js | .jsx |
|---|---|---|
| 확장자 의미 | JavaScript 파일 | JavaScript + XML |
| 사용 목적 | 일반 JS 코드 | React 컴포넌트에서 JSX 문법 사용 시 |
| JSX 사용 | ❌ 기본 JS 문법만 | ✅ <div>안녕</div> 같은 JSX 문법 사용 가능 |
| 브라우저 이해도 | 브라우저가 인식 | 브라우저는 JSX 인식 불가 → Babel이 변환해줌 |
| 예시 | function test() {} | const App = () => <div>Hello</div> |
✅ JSX는 JavaScript 확장 문법으로, HTML 태그를 JS 코드처럼 사용할 수 있게 해주는 문법이다
따라서 React 컴포넌트는
.jsx확장자를 사용하는 것이 권장됨.
🛠️ CRA vs Vite 명령어 비교
| 목적 | CRA 명령어 | Vite 명령어 |
|---|---|---|
| 프로젝트 생성 | npx create-react-app my-app | npm create vite@latest my-app -- --template react |
| 설치 이동 | cd my-app && npm install | cd my-app && npm install |
| 개발 서버 실행 | npm start | npm run dev |
| 빌드 | npm run build | npm run build |
| 테스트 | npm test | 별도 설정 필요 (vitest, jest 등 수동 설정) |
✍️ 정리 요약
| 구분 | CRA | Vite |
|---|---|---|
| 속도 | 느림 | 빠름 ⚡ |
| 설정 | 자동화 / 복잡 | 간단 / 설정 유연 |
| 사용 기술 | Webpack | ESBuild |
| JSX 파일 | 기본 지원 (.js도 가능) | .jsx 또는 .tsx 권장 |
| 권장 대상 | React 입문자, 안정적 개발 | 최신 트렌드에 맞는 개발, 빠른 피드백 원할 때 |
태그
#React
