[TIL] issue-tracker 구조 설계

eunbi·2020년 6월 14일
0

TIL

목록 보기
44/45

구조설계

구조설계를 어떻게 할지 계속 고민하다가 아래와 같이 구성하였다.

파일구조

└─src
    │  App.js
    │  index.js
    │
    ├─components
    │  ├─common
    │  │      Header.jsx
    │  │
    │  └─Issues
    │      ├─IssueTable
    │      │  │  IssueTable.jsx
    │      │  │
    │      │  ├─IssueList
    │      │  │  │  IssueList.jsx
    │      │  │  │  StatusIcon.jsx
    │      │  │  │
    │      │  │  ├─AvatarStack
    │      │  │  │      Avatar.jsx
    │      │  │  │      AvatarStack.jsx
    │      │  │  │
    │      │  │  └─Contents
    │      │  │          Contents.jsx
    │      │  │          Details.jsx
    │      │  │          Label.jsx
    │      │  │          Title.jsx
    │      │  │
    │      │  └─Toolbar
    │      │      │  SelectedNumber.jsx
    │      │      │  Toolbar.jsx
    │      │      │  TotalCheckBox.jsx
    │      │      │
    │      │      └─TableFilters
    │      │              Menu.jsx
    │      │              TableFilters.jsx
    │      │
    │      └─Navigation
    │          │  Navigation.jsx
    │          │  NewIssueButton.jsx
    │          │
    │          ├─Filter
    │          │      ClearButton.jsx
    │          │      Filter.jsx
    │          │      Menu.jsx
    │          │      SearchBar.jsx
    │          │
    │          └─LinkButtons
    │                  LinkButtons.jsx
    │		       LinkButton.jsx
    │
    ├─pages
    │      DetailedIssue.jsx
    │      EditMilestone.jsx
    │      Issues.jsx
    │      Labels.jsx
    │      Login.jsx
    │      Milestones.jsx
    │      NewIssue.jsx
    │      NewMilestone.jsx
    │
    └─style
            GlobalStyle.jsx
  • components 디렉토리 내부 issues폴더에 이슈 리스트 화면 컴포넌트를 분리했다.
  • common폴더에 공통으로 사용되는 헤더 컴포넌트 파일을 두었다.
  • pages폴더에 있는 페이지들로 라우팅이 이루어진다.
  • 컴포넌트 재사용 여부에 따라 구조는 추후 변경될 것 같다.

아래와 같이 그룹지어 구조설계 했다.

  • 이슈목록 전체

  • 이슈목록

페이지 Route 분류

번호종류페이지명주소
1로그인Login/login
2이슈 목록Issuesdefault: /issues
filter: /issues/{filterQueries}
3이슈 생성NewIssue/issues/new
4이슈 상세DetailedIssue/issues/{issueID}
5라벨 목록Labels/labels
6마일스톤 목록Milestones/milestones
7마일스톤 수정EditMilestone/milestones/{milestoneID}/edit
8마일스톤 생성NewMilestone/milestones/new
profile
프론트엔드 개발자입니다 :)

0개의 댓글