아래와 같이 레이아웃 구조를 잡았습니다.
app.vue
├── layouts
│ └── default.vue
├── pages
│ ├── index.vue
│ └── signup
│ ├── [step].vue
│ └── success.vue
├── components
│ ├── A
│ │ ├── Button.vue
│ │ ├── Footer.vue
│ │ ├── Header.vue
│ │ ├── Language.vue
│ │ └── Theme.vue
│ └── Signup
│ ├── Privacy.vue
│ ├── Shipping.vue
│ └── Payment.vue
├── composables
├── styles
├── locales
└── stores
app.vue
: 레아아웃으로 래핑된 페이지에 각 페이지에 포함될 Loading Indicator, Notifications을 공통으로 호출합니다.default.vue
: 각 페이지의 레이아웃으로, 상단의 헤더, 푸터를 공통으로 추출 구현하였습니다.index.vue
: 회원가입 절차를 진행할 수 있는 페이지입니다. 중앙 회원가입 버튼을 클릭하면 진입합니다.[step].vue
: 회원가입 절차가 진행되는 페이지입니다. 각 페이지 라우트를 쿼리 파라미터를 확인하여 각 단계가 진행되도록 구현하였습니다.success.vue
: 회원가입 성공페이지 입니다. 상단 로고를 클릭하면 메인으로 돌아갑니다.Privacy.vue
: 개인정보 입력화면의 템플릿 입니다.Shipping.vue
: 배송지정보 입력화면의 템플릿 입니다.Payment.vue
: 결제정보 입력화면의 템플릿 입니다.각 단계에 모든내용을 validate 확인 이후 store에 저장 하여, 이전 화면으로 이동하여도 다시 입력하지 않도록 처리 해 두었습니다. 사용된 공통함수들은 composable화 하여 별도보관처리 하였습니다.