-
Notifications
You must be signed in to change notification settings - Fork 28
프론트엔드 폴더 구조
kwannee edited this page Nov 14, 2022
·
1 revision
-
페이지를 담당하는 컴포넌트
들을 둔다. - 페이지 별로 폴더를 만들고 index.tsx로 해당 페이지 컴포넌트를 만든다.
- 페이지 컴포넌트에 들어가는 하위 컴포넌트도 같은 폴더에 함께 작성한다.
- 하위 컴포넌트를 다른 폴더로 분리하지 않고 함께 작성하는 이유는 도메인 로직이 섞인 컴포넌트이기 때문이다.
- 스타일은 styles.ts 파일로 분리한다.
- 스타일은 emotion을 사용하여 정의한다.
- 하위 컴포넌트의 스타일도 이곳에 정의한다.
pages
┗ MainPage
┣ index.tsx // MainPage 컴포넌트
┣ PopularStudyLogList.tsx // 하위 컴포넌트1
┣ RecentStudylogList.tsx // 하위 컴포넌트2
┗ styles.ts // 스타일
- axios를 통한
비동기 호출을 하는 함수
들을 둔다. - 도메인 이름으로 파일을 만들고 내부에 해당 도메인에 맞는 비동기 호출 함수들을 정의한다.
apis
┣ index.ts // axios instance
┣ abilitiy.ts
┣ comment.ts
┣ ...
┗ studylog.ts
- 도메인 로직이 없는
UI 컴포넌트
들을 정의한다.(검토)
hooks
┗ queries
┣ auth.ts
┣ comment.ts
┣ filters.ts
┣ ...
┗ profile.ts
┣ ...
┗ useBeforeunload.ts
- 공통 커스텀 훅과 비동기 통신 로직을 관리하는 커스텀 훅들을 둔다.
- 공통적으로 사용되는 훅은 hooks 폴더 최상단에 작성한다.
- 비동기 통신 로직을 관리하는 담당하는 훅은 queries 폴더 아래 도메인 명으로 파일을 작성한다.
hooks
┗ queries
┣ auth.ts
┣ comment.ts
┣ filters.ts
┣ ...
┗ profile.ts
┣ ...
┗ useBeforeunload.ts
-
도메인 모델
들을 정의하는 타입스크립트 파일들을 둔다. - 도메인 모델과 해당 도메인의
Request
,Response
interface를 정의한다. - 도메인 명을 파일 명으로, 첫글자는 대문자로 한다.
models
┣ Ability.ts
┣ Comment.ts
┣ Keywords.ts
┣ Levellogs.ts
┗ Studylogs.ts