첫 번째 React 프로젝트
1. 첫 번째 React 프로젝트
이제 React 개발 환경이 준비되었으니 첫 번째 프로젝트를 만들고 실행해보겠습니다. 터미널을 열고 다음 단계를 따라 해보세요.
1.1 Vite란 무엇인가요?
Vite(비트, "빠르다"는 뜻의 프랑스어)는 Evan You(Vue.js 창시자)가 개발한 차세대 프론트엔드 빌드 도구입니다.
1.1.1 Vite의 특징
빠른 개발 서버
- 즉시 시작: 서버 시작 시간이 매우 빠릅니다
- 빠른 HMR(Hot Module Replacement): 코드 변경 시 즉시 브라우저에 반영
- 네이티브 ES 모듈 활용: 브라우저의 ES 모듈을 직접 활용하여 번들링 없이 개발
효율적인 빌드
- Rollup 기반: 프로덕션 빌드 시 Rollup을 사용하여 최적화된 번들 생성
- 트리 쉐이킹: 사용하지 않는 코드 자동 제거
- 코드 분할: 자동으로 코드를 분할하여 로딩 성능 향상
기존 도구와의 비교
| 특징 | Create React App | Vite |
|---|---|---|
| 서버 시작 속도 | 느림 (10-30초) | 빠름 (1-2초) |
| HMR 속도 | 보통 | 매우 빠름 |
| 빌드 속도 | 보통 | 빠름 |
| 설정의 복잡성 | 간단 (숨겨짐) | 간단하면서 유연 |
| 최신 기술 지원 | 보수적 | 적극적 |
1.1.2 왜 Vite를 사용하나요?
- 개발 생산성 향상: 빠른 서버 시작과 즉시 반영되는 변경사항
- 최신 웹 표준: ES 모듈, TypeScript, CSS Preprocessor 등 기본 지원
- 확장성: 플러그인 시스템으로 다양한 도구 통합 가능
- 미래 지향적: 웹 표준을 적극 활용하는 현대적 접근 방식
1.2 Vite로 React 프로젝트 생성하기
1.2.1 프로젝트 생성
터미널에서 다음 명령어를 실행합니다:
npm create vite@latest my-first-react-app -- --template reactnpm create vite@latest my-first-react-app -- --template react이 명령어는 몇 분 정도 시간이 걸릴 수 있습니다. 완료되면 my-first-react-app이라는 이름의 폴더가 생성됩니다.
1.2.2 프로젝트 폴더로 이동
cd my-first-react-appcd my-first-react-app1.2.3 의존성 설치
npm installnpm install1.2.4 개발 서버 실행
npm run devnpm run dev명령어를 실행하면 브라우저가 자동으로 열리고 http://localhost:5173에서 React 앱이 실행됩니다.
위와 같은 화면이 보이면 성공입니다! React 로고가 돌아가는 것을 확인할 수 있습니다.
1.3 프로젝트 구조 살펴보기
생성된 프로젝트의 폴더 구조를 살펴보겠습니다:
my-first-react-app/
├── node_modules/ # 프로젝트 의존성 패키지들
├── public/ # 정적 파일들
│ ├── index.html # 메인 HTML 파일
│ └── favicon.ico # 파비콘
├── src/ # 소스 코드
│ ├── App.js # 메인 컴포넌트
│ ├── App.css # App 컴포넌트 스타일
│ ├── index.js # 진입점 파일
│ └── index.css # 전역 스타일
├── package.json # 프로젝트 설정 및 의존성 정보
└── README.md # 프로젝트 설명서my-first-react-app/
├── node_modules/ # 프로젝트 의존성 패키지들
├── public/ # 정적 파일들
│ ├── index.html # 메인 HTML 파일
│ └── favicon.ico # 파비콘
├── src/ # 소스 코드
│ ├── App.js # 메인 컴포넌트
│ ├── App.css # App 컴포넌트 스타일
│ ├── index.js # 진입점 파일
│ └── index.css # 전역 스타일
├── package.json # 프로젝트 설정 및 의존성 정보
└── README.md # 프로젝트 설명서1.3.1 주요 파일 설명
1.3.1.1 public/index.html
React 앱이 렌더링될 HTML 파일입니다. <div id="root"></div>가 React 앱의 진입점입니다.
1.3.1.2 src/index.js
JavaScript 진입점 파일로, React 앱을 DOM에 렌더링합니다:
import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
);1.3.1.3 src/App.js
메인 React 컴포넌트입니다. 여기서부터 앱 개발을 시작합니다:
import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;import logo from './logo.svg';
import './App.css';
function App() {
return (
<div className="App">
<header className="App-header">
<img src={logo} className="App-logo" alt="logo" />
<p>
Edit <code>src/App.js</code> and save to reload.
</p>
<a
className="App-link"
href="https://reactjs.org"
target="_blank"
rel="noopener noreferrer"
>
Learn React
</a>
</header>
</div>
);
}
export default App;1.4 첫 번째 수정해보기
이제 코드를 수정해봅시다. src/App.js 파일을 열고 다음과 같이 간단하게 수정해보세요:
function App() {
return (
<div className="App">
<h1>안녕하세요, React!</h1>
<p>첫 번째 React 프로젝트에 오신 것을 환영합니다.</p>
</div>
);
}
export default App;function App() {
return (
<div className="App">
<h1>안녕하세요, React!</h1>
<p>첫 번째 React 프로젝트에 오신 것을 환영합니다.</p>
</div>
);
}
export default App;파일을 저장하면 브라우저가 자동으로 새로고침되고 변경사항이 바로 반영됩니다. 이를 **Hot Module Replacement(HMR)**라고 합니다.
1.5 유용한 npm 명령어들
React 프로젝트에서 자주 사용하는 명령어들을 알아봅시다:
1.5.1 개발 서버 실행
npm run devnpm run dev개발 모드로 앱을 실행합니다. 파일을 수정하면 자동으로 새로고침됩니다.
1.5.2 프로덕션 빌드
npm run buildnpm run build배포용으로 최적화된 파일들을 생성합니다. build 폴더에 결과물이 생성됩니다.
1.5.3 테스트 실행
npm testnpm test테스트 파일들을 실행합니다.
1.5.4 설정 파일 추출 (주의!)
npm run ejectnpm run eject⚠️ 주의: 이 명령어는 되돌릴 수 없습니다. Create React App의 설정을 직접 수정하고 싶을 때만 사용하세요.
1.6 VS Code에서 React 개발하기
Visual Studio Code에서 React 프로젝트를 열어봅시다:
- VS Code를 열고
File→Open Folder선택 my-first-react-app폴더를 선택- 프로젝트가 열리면
src/App.js파일을 열어보세요
1.6.1 유용한 VS Code 확장 프로그램
React 개발을 더 편하게 해주는 확장 프로그램들을 설치해보세요:
- ES7+ React/Redux/React-Native snippets: React 코드 조각 제공
- Prettier - Code formatter: 코드 자동 정렬
- Auto Rename Tag: HTML/JSX 태그 자동 수정
- Bracket Pair Colorizer: 괄호 색상 구분
1.7 프로젝트 정리하기
기본으로 생성된 파일들을 정리해서 더 깔끔하게 만들어봅시다.
1.7.1 불필요한 파일 삭제
다음 파일들을 삭제해도 됩니다:
src/logo.svgsrc/App.test.jssrc/reportWebVitals.jssrc/setupTests.js
1.7.2 App.css 수정
src/App.css 파일을 다음과 같이 간단하게 수정합니다:
.App {
text-align: center;
padding: 20px;
}
.App h1 {
color: #61dafb;
margin-bottom: 20px;
}
.App p {
font-size: 18px;
color: #333;
}.App {
text-align: center;
padding: 20px;
}
.App h1 {
color: #61dafb;
margin-bottom: 20px;
}
.App p {
font-size: 18px;
color: #333;
}1.7.3 수정된 App.js
import './App.css';
function App() {
return (
<div className="App">
<h1>React 베이스캠프에 오신 것을 환영합니다!</h1>
<p>이제 React 개발을 시작해봅시다.</p>
</div>
);
}
export default App;import './App.css';
function App() {
return (
<div className="App">
<h1>React 베이스캠프에 오신 것을 환영합니다!</h1>
<p>이제 React 개발을 시작해봅시다.</p>
</div>
);
}
export default App;1.8 정리
첫 번째 React 프로젝트 생성을 완료했습니다! 지금까지 배운 내용:
- Create React App으로 React 프로젝트 생성
- 프로젝트 구조 이해
- 개발 서버 실행과 Hot Module Replacement
- 기본 코드 수정해보기
- npm 명령어들 활용
다음 장에서는 React의 핵심인 JSX 문법에 대해 자세히 알아보겠습니다.