728x90
React + Vite
프로젝트 구조
my-vite-app/
├── node_modules/ # 설치된 의존성
├── public/ # 정적 파일 (favicon, 이미지 등)
│ └── vite.svg # Vite 기본 로고
├── src/ # 소스 코드
│ ├── assets/ # 이미지, 스타일 등 정적 파일
│ ├── components/ # React 컴포넌트 폴더
│ ├── App.css # 메인 CSS 파일
│ ├── App.jsx # App 컴포넌트
│ ├── main.jsx # React DOM 렌더링 진입점
│ ├── index.css # 전역 스타일
│ ├── api/ # API 호출 관련 파일 - 선택
│ ├── hooks/ # Custom Hooks - 선택
│ ├── pages/ # 페이지 컴포넌트 - 선택
│ ├── routes/ # React Router 설정 - 선택
│ ├── services/ # 비즈니스 로직 (e.g., API 서비스) - 선택
│ └── utils/ # 유틸리티 함수 - 선택
├── .gitignore # Git에서 무시할 파일 목록
├── package.json # 프로젝트 정보 및 의존성
├── vite.config.js # Vite 설정 파일
├── README.md # 프로젝트 설명 파일
└── yarn.lock / package-lock.json # 의존성 잠금 파일
추가 모듈
1. React Router
npm install react-router-dom
React Router란?
- React Router는 "React 애플리케이션에서 라우팅(페이지 전환)"을 담당하는 라이브러리
- 싱글 페이지 애플리케이션(SPA)에서 URL에 따라 다른 컴포넌트를 렌더링하기 위해 사용
사용 이유
- React 자체에는 내장된 라우팅 기능이 없기 때문에 React Router를 사용해 SPA에서 페이지 이동을 구현
주요 특징
- 동적 라우팅: URL에 따라 컴포넌트를 동적으로 렌더링.
- Nested Routes: 부모/자식 경로 지원.
- 라우팅 관리: BrowserRouter와 HashRouter 방식 지원.
- Link 컴포넌트: 페이지 새로고침 없이 링크 이동 가능.
사용예시
import { BrowserRouter, Routes, Route } from 'react-router-dom';
import Home from './pages/Home';
import About from './pages/About';
function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
}
2. 상태 관리 라이브러리 예시 (Redux Toolkit)
npm install @reduxjs/toolkit react-redux
Redux란?
- Redux Toolkit은 React 상태 관리 라이브러리 Redux의 공식 툴킷
- Redux의 복잡한 설정 문제를 해결하고, 더 간결한 코드 작성을 돕습니다.
사용이유
- React의 기본 상태 관리(Context API)보다 더 큰 규모의 상태 관리가 필요할 때 Redux를 사용
- Redux Toolkit은 이를 더 쉽게 제공
주요 특징
- 간단한 설정: 상태 관리에 필요한 코드를 줄임.
- 비동기 처리: createAsyncThunk를 통해 비동기 작업 관리.
- Immutable 상태 관리: 상태 불변성을 자동으로 처리.
- Slices: 상태와 리듀서를 한곳에서 관리.
사용 예시
1. 상태 생성 (slice 생성)
import { createSlice } from '@reduxjs/toolkit';
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment: (state) => { state.value += 1; },
decrement: (state) => { state.value -= 1; },
},
});
export const { increment, decrement } = counterSlice.actions;
export default counterSlice.reducer;
2. Store 설정
import { configureStore } from '@reduxjs/toolkit';
import counterReducer from './counterSlice';
export const store = configureStore({
reducer: {
counter: counterReducer,
},
});
3. 예시 1., 2. 적용
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';
import { increment, decrement } from './counterSlice';
function Counter() {
const count = useSelector((state) => state.counter.value);
const dispatch = useDispatch();
return (
<div>
<h1>{count}</h1>
<button onClick={() => dispatch(increment())}>Increment</button>
<button onClick={() => dispatch(decrement())}>Decrement</button>
</div>
);
}
3. Tailwind CSS
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init
Tailwind CSS 란?
- Tailwind CSS는 유틸리티 퍼스트(Utility-first) CSS 프레임워크
- CSS를 직접 작성하지 않고 클래스 이름으로 스타일을 지정할 수 있도록 지원
사용 이유
- 빠른 개발 속도: CSS를 직접 작성하지 않아도 클래스 조합으로 스타일링 가능.
- 일관된 디자인: 유틸리티 클래스 사용으로 팀 내 디자인 일관성 유지.
- 반응형 디자인 최적화: 반응형 디자인을 쉽게 구현 가능 (예: md:p-4, lg:text-xl).
주요 특징
- 유틸리티 클래스 제공: 미리 정의된 클래스를 조합해 빠르게 스타일 작성.
- 커스터마이징 가능: tailwind.config.js 파일을 통해 색상, 크기 등을 커스터마이징.
- 반응형 디자인 지원: 모바일, 태블릿, 데스크톱 등의 브레이크포인트를 쉽게 구현.
사용 예시
1. 설정 (tailwind.config.js)
module.exports = {
content: ['./src/**/*.{js,jsx,ts,tsx}'], // Tailwind 적용할 파일
theme: {
extend: {},
},
plugins: [],
};
2. 스타일 추가 (index.css)
@tailwind base;
@tailwind components;
@tailwind utilities;
3. 예시 1., 2. 적용
export default function App() {
return (
<div className="bg-blue-500 text-white p-4 rounded-lg">
<h1 className="text-xl font-bold">Hello, Tailwind CSS!</h1>
</div>
);
}
정리
라이브러리 | 역할 및 주요 사용 이유 |
React Router | URL 경로에 따라 다른 컴포넌트를 렌더링. SPA에서 필수. |
Redux Toolkit | React 상태 관리 도구. 간결한 코드로 상태를 관리. |
Tailwind CSS | 클래스 조합으로 빠르고 효율적인 스타일링. 디자인 시스템. |
추후 사용해도 좋을 라이브러리
- React Query
- 사용처: 서버 상태 관리, 데이터 페칭 최적화
- 설치 방법: npm install @tanstack/react-query
- 특징: 캐싱, 리트라이, 동기화, 로딩/에러 관리에 최적화
- Redux Thunk
- 사용처: Redux에서 비동기 액션 처리
- 설치 방법: npm install redux-thunk
- 특징: 간단한 비동기 로직 관리
- React Hook Form
- 사용처: 폼 상태 및 유효성 검사
- 설치 방법: npm install react-hook-form
- 특징: 가볍고 빠른 폼 관리
- Framer Motion
- 사용처: React 애니메이션 구현
- 설치 방법: npm install framer-motion
- 특징: 간단하고 강력한 애니메이션 기능 제공
- React Icons
- 사용처: 다양한 아이콘 사용
- 설치 방법: npm install react-icons
- 특징: Font Awesome, Material Icons 등 통합 제공
- React Table
- 사용처: 대규모 테이블 데이터 관리
- 설치 방법: npm install @tanstack/react-table
- 특징: 정렬, 필터링, 페이징 등 고급 테이블 기능
- Axios
- 사용처: HTTP 요청 처리
- 설치 방법: npm install axios
- 특징: Fetch API보다 간편, 인터셉터로 공통 처리 가능
- Styled Components
- 사용처: CSS-in-JS 방식의 스타일링
- 설치 방법: npm install styled-components
- 특징: 컴포넌트 단위 스타일 관리
- date-fns
- 사용처: 날짜/시간 처리
- 설치 방법: npm install date-fns
- 특징: 가볍고 유연한 날짜 유틸리티 제공
- React Hot Toast
- 사용처: 사용자 알림(토스트)
- 설치 방법: npm install react-hot-toast
- 특징: 가볍고 직관적인 토스트 알림 구현
- react-i18next
- 사용처: 다국어 지원
- 설치 방법: npm install react-i18next i18next
- 특징: 효율적인 다국어 번역 및 관리
- react-dropzone
- 사용처: 파일 업로드
- 설치 방법: npm install react-dropzone
- 특징: 드래그 앤 드롭 기반 파일 업로드 구현
- 간단 팁
- 소규모 프로젝트: React Hook Form, React Icons, Axios, React Query 추천
- 대규모 프로젝트: Redux Toolkit, React Query, React Table, i18next 추가 고려
728x90