티스토리 뷰
반응형
React 앱 구조 설계 Best Practice – Atomic Design 적용법
React 프로젝트가 커질수록 컴포넌트 재사용, 코드 유지보수성,
협업 생산성이 중요한 요소가 됩니다.
이때 유용한 설계 전략 중 하나가 바로 Atomic Design 패턴입니다.
이번 글에서는 Atomic Design의 개념부터,
React 프로젝트에 어떻게 적용할 수 있는지 실전 예제와 함께 정리합니다.
✅ 왜 앱 구조 설계가 중요할까?
- 규모가 커질수록 유지보수가 힘들어짐
- 컴포넌트 간 관계가 꼬이기 쉬움
- 재사용성이 떨어지는 UI는 중복 코드와 버그를 유발
→ 명확한 컴포넌트 계층 구조와 폴더 구조 설계는 생산성을 극대화합니다.
🔷 Atomic Design이란?
Brad Frost가 제안한 UI 설계 방법론으로,
UI를 작은 단위부터 점점 조합해가는 방식입니다.
구성 단계
- Atoms – 가장 작은 단위 (버튼, 라벨, 입력 등)
- Molecules – 원자들을 조합한 작은 컴포넌트 (입력 + 라벨 등)
- Organisms – 독립적인 섹션 구성 (카드, 네비게이션 등)
- Templates – 레이아웃 구조 (Header + Main + Footer)
- Pages – 실제 페이지에 데이터를 적용한 형태
🔸 예시
단계 예
Atom | Button, Input, Label |
Molecule | SearchBar (Input + Button) |
Organism | Header, CardList |
Template | MainLayout, AuthLayout |
Page | /home, /login, /product/[id] |
🗂 React 프로젝트 폴더 구조 예시
/src
/components
/atoms
Button.jsx
Input.jsx
/molecules
SearchBar.jsx
FormField.jsx
/organisms
Header.jsx
ProductList.jsx
/layouts
MainLayout.jsx
AuthLayout.jsx
/pages
Home.jsx
ProductDetail.jsx
/hooks
useFetch.js
/contexts
ThemeContext.js
/utils
formatDate.js
✅ 계층적으로 컴포넌트를 관리하므로,
✅ 협업 시 역할 분리가 명확하고,
✅ 테스트와 유지보수가 쉬움
🧱 컴포넌트 이름 짓는 팁
반응형
위치 이름 예시 역할
Atoms | Button, Text, Badge | 단순 스타일, 입력 |
Molecules | FormField, SearchBar | 조합된 입력 블록 |
Organisms | CardList, Navbar, Footer | 특정 섹션을 구성 |
Templates | MainLayout, DashboardLayout | 페이지 구조 설계 |
Pages | HomePage, LoginPage | 데이터 포함된 화면 단위 |
🔁 Atomic Design vs 일반 폴더 구조
항목 일반 구조 Atomic Design
접근 방식 | 기능 단위 (예: /Product/) | 역할 단위 (예: /atoms, /organisms) |
재사용성 | 낮음 | 높음 |
협업 | 중복 구성 우려 | 명확한 계층 분리 |
테스트 | 섞여 있음 | 단위 테스트 쉬움 |
✨ 실무 팁
- atoms와 molecules는 UI 라이브러리처럼 만들어라
- organisms부터는 비즈니스 로직이 포함될 수 있음
- pages 폴더에서는 데이터 fetch + 컴포넌트 조립에 집중
- hooks, contexts, utils는 계층 외 별도 분리
🧠 오늘의 요약
개념 설명
Atomic Design | UI를 계층적으로 구성하는 설계 전략 |
Atoms → Pages | 가장 작은 단위에서 페이지까지 구성 |
폴더 구조 설계 | 역할에 따라 디렉토리를 나눔 |
재사용성 | 구조화된 설계를 통해 반복을 줄임 |
🧪 실습 과제
- 기존 프로젝트의 /components 폴더를 atoms, molecules, organisms로 나눠보세요
- 공통 UI 요소는 atoms로 분리하고, 검색창 등은 molecules로 구성해보세요
- 전체 레이아웃은 MainLayout.jsx로 만들고, 각 페이지에서 래핑해보세요
📌 다음 글 예고
👉 React + React Router로 싱글 페이지 앱 만들기
- SPA 라우팅 원리
- 동적 라우트, 중첩 라우트 사용법
- 레이아웃 기반 구조 설계
React 폴더 구조, Atomic Design 패턴, React 컴포넌트 설계, 컴포넌트 재사용성, React UI 아키텍처, React 컴포넌트 계층, atoms molecules organisms, React 프로젝트 구조, 컴포넌트 네이밍 전략, React 설계 베스트 프랙티스
'framework > React' 카테고리의 다른 글
React + API 통신 완전 정복 – fetch와 Axios 비교 (1) | 2025.04.15 |
---|---|
React + React Router로 싱글 페이지 앱(SPA) 만들기 (0) | 2025.04.14 |
컴포넌트 성능 최적화 – memo, useMemo, useCallback 총정리 (0) | 2025.04.11 |
상위 → 하위, 그리고 Context – React 데이터 흐름 정복 (1) | 2025.04.10 |
useEffect 완전 이해 – 의존성 배열과 클린업 함수의 진실 (1) | 2025.04.09 |
※ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 백엔드개발
- Python
- 프론트엔드면접
- SEO최적화
- seo 최적화 10개
- nodejs
- fastapi
- 프론트엔드
- llm
- Next.js
- CI/CD
- NestJS
- App Router
- kotlin
- Ktor
- 웹개발
- PostgreSQL
- Prisma
- 개발블로그
- gatsbyjs
- AI챗봇
- nextJS
- REACT
- 파이썬알고리즘
- JAX
- Docker
- SEO 최적화
- rag
- flax
- 딥러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함
반응형