프로젝트 초기 세팅을 하며 디렉토리 구조를 고민하던 중, 디자인 패턴에 대해 공부한 내용과 현재 프로젝트에 맞게 두가지 패턴을 섞어서 구성한 디렉토리 구조에 대한 소개
뷰, 뷰 로직 <-> 비즈니스 로직의 분리
뷰: React 컴포넌트에서 반환하는 JSX 및 기타 CSS 관련 코드
뷰 로직: isLoading, errorText와 같은 UI/UX 개선을 위한 코드
비즈니스 로직: API Call, 데이터 가공 및 저장 로직
재사용성에 중점을 두어 비즈니스 논리 / 뷰 + 뷰 논리 로 분리 --> customed hooks design
재사용성에 중점을 두어 최소단위들로 분리 --> atomic design
모든 것은 atom(원자)으로 구성되어있고 atom(원자)들이 서로 결합하여 molecule(분자)이 되고, molecule는 더 복잡한 organism(유기체)으로 결합하여 궁극적으로 모든 물질을 생성. 재사용성을 최대화
재사용성이 높아짐
선형으로 진행되는 구조가 아니기 때문에, (필요에 따라 단계를 건너뛰거나 합치기도 함) 어느 파일에 위치하는지 헷갈릴 수 있음.
도메인 별로 구별하기가 어려움
common
디렉토리 생성하여 그 안에 넣을 예정)개발자가 스스로 디자인한 훅
코드 로직의 반복을 최소화하고 재사용을 극대화, 한눈에 보기 쉬운 코드를 만들기 위해
반드시 use로 시작해야 함 (useConnect, useInput 등..)
|-api >api 관련 파일들
|-assets > 정적 요소들
|-fonts
|-icons
|-images
|-utils > 전역 함수들
|-Colors.js > 색상 정의 파일
|- ...
--------여기부터 atomic 기반--------
--------비즈니스 로직과 뷰를 분리--------
--------최대한 스타일은 이전 단계에서 적용해놓기--------
|-atoms > atom-design 원자
|-buttons
|-MainButton.js
|-SendButton.js
|- ...
|-texts
|-Text16B.js
|-Text16M.js
|-Text32B.js
|- ...
|-components > atom-design 분자 + 유기체 (원자들로 구성 / 재사용이 높은 컴포넌트들 / 도메인별로 폴더 구분하지 않음)
|-card
|-FeedCard.js
|-LogCard.js
|- ...
|-input
|-NumberInput.js
|- ...
|-list
|-FeedList.js
|- PlaceList.js
|- ...
|-templates > atom-design 템플릿 (비즈니스 로직 없는 UI 뷰만 표시 / 해당 도메인에서만 사용되는 작은 컴포넌트 들 또는 전체 페이지의 UI 구조)
|-main > 도메인별 폴더
|-setting
|-search
|-
|-feed
|-visit
| ...
|-pages > atom-design 페이지 (템플릿 + 비즈니스 로직)
|-main > 도메인별 폴더
|-setting
|-search
|-feed
|-visit
| ...
|-hooks > 비즈니스 로직 중 hook들
|-useAddLog.js >도메인에 상관없이 개별 hook 파일들
|-useDeleteLog.js
|-
참고 링크
https://fe-developers.kakaoent.com/2022/220505-how-page-part-use-atomic-design-system/
https://brunch.co.kr/@skykamja24/580
https://blog.leehov.in/57?category=951478