프로젝트를 시작하면서 가장 먼저 고민했던 것 중 하나가 폴더 구조였다.
Flutter로 프로젝트를 진행했던 것과는 여러 구조들이 다를 것이라고 생각해서 관련된 내용을 정리하고 시작하고자 한다.
React에서 가장 기본적인 폴더 구조를 알아보자.
src/
├── components/ // 재사용 가능한 UI 컴포넌트
├── pages/ // 페이지 단위 컴포넌트
├── styles/ // 전역 스타일 관리
│ ├── colors/
│ │ └── colors.css
│ ├── fonts/
│ │ └── fonts.css
│ └── global/
│ ├── reset.css
│ └── common.css
├── api/ // API 요청 함수
├── hooks/ // custom hook
├── utils/ // 공통 함수
└── assets/ // 이미지, 아이콘
└── images/
재사용 가능한 UI 조각
여러 페이지에서 사용할 수 있도록 만드는 것이 핵심
화면 단위
하나의 화면 = 하나의 페이지
전역 스타일 관리
디자인과 관련된 파일들
서버 통신
* 예시
export async function getProducts() {
const res = await fetch('/products');
return res.json();
}
API 로직을 분류하여 관리하면 컴포넌트가 깔끔해진다
function useProducts() {
// 데이터 fetch 로직
}
로직 재사용을 위한 공간
공통 함수
이미지, 아이콘
Flutter로 프로젝트를 진행할 때는 MVC, MVVM 같은 아키텍처 패턴 중심으로 폴더를 나누는 경우가 많았다.
하지만 React는 조금 다르게 접근한다는 것을 알았다.
⚛️**React는 '역할'보다 '기능(UI)'으로 나눈다
컴포넌트가 기본 단위인 React에서는 컴포넌트 하나 자체가 구조 역할을 하기에 이러한 특징이 생긴다.
또한 React는 공식적으로 정해진 폴더 구조가 없다고 한다.
그래서 작은 프로젝트는 단순 구조로 진행되지만, 커질 수록 feature 기반으로 확장되는 경우가 많다고 한다.
프로젝트를 시작하기 전에 폴더 구조와 같은 여러 컨벤션들을 미리 정리하고 약속해두고 시작하면서 진행 중에 생기는 크고 작은 이슈들을 미리 방지하기에 유리함을 느꼈다.