Skip to content

Commit

Permalink
chore: PR Template 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
JunilHwang committed Dec 21, 2024
1 parent 126f407 commit cc286d7
Showing 1 changed file with 30 additions and 64 deletions.
94 changes: 30 additions & 64 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,70 +2,36 @@

### 기본과제

#### 1) 라우팅 구현:
- [ ] History API를 사용하여 SPA 라우터 구현
- [ ] '/' (홈 페이지)
- [ ] '/login' (로그인 페이지)
- [ ] '/profile' (프로필 페이지)
- [ ] 각 라우트에 해당하는 컴포넌트 렌더링 함수 작성
- [ ] 네비게이션 이벤트 처리 (링크 클릭 시 페이지 전환)
- [ ] 주소가 변경되어도 새로고침이 발생하지 않아야 한다.

#### 2) 사용자 관리 기능:
- [ ] LocalStorage를 사용한 간단한 사용자 데이터 관리
- [ ] 사용자 정보 저장 (이름, 간단한 소개)
- [ ] 로그인 상태 관리 (로그인/로그아웃 토글)
- [ ] 로그인 폼 구현
- [ ] 사용자 이름 입력 및 검증
- [ ] 로그인 버튼 클릭 시 LocalStorage에 사용자 정보 저장
- [ ] 로그아웃 기능 구현
- [ ] 로그아웃 버튼 클릭 시 LocalStorage에서 사용자 정보 제거

#### 3) 프로필 페이지 구현:
- [ ] 현재 로그인한 사용자의 정보 표시
- [ ] 사용자 이름
- [ ] 간단한 소개
- [ ] 프로필 수정 기능
- [ ] 사용자 소개 텍스트 수정 가능
- [ ] 수정된 정보 LocalStorage에 저장

#### 4) 컴포넌트 기반 구조 설계:
- [ ] 재사용 가능한 컴포넌트 작성
- [ ] Header 컴포넌트
- [ ] Footer 컴포넌트
- [ ] 페이지별 컴포넌트 작성
- [ ] HomePage 컴포넌트
- [ ] ProfilePage 컴포넌트
- [ ] NotFoundPage 컴포넌트

#### 5) 상태 관리 초기 구현:
- [ ] 간단한 상태 관리 시스템 설계
- [ ] 전역 상태 객체 생성 (예: 현재 로그인한 사용자 정보)
- [ ] 상태 변경 함수 구현
- [ ] 상태 업데이트 시 관련 컴포넌트 리렌더링

#### 6) 이벤트 처리 및 DOM 조작:
- [ ] 사용자 입력 처리 (로그인 폼, 프로필 수정 등)
- [ ] 동적 컨텐츠 렌더링 (사용자 정보 표시, 페이지 전환 등)

#### 7) 라우팅 예외 처리:
- [ ] 잘못된 라우트 접근 시 404 페이지 표시

### 심화과제

#### 1) 해시 라우터 구현
- [ ] location.hash를 이용하여 SPA 라우터 구현
- [ ] '/#/' (홈 페이지)
- [ ] '/#/login' (로그인 페이지)
- [ ] '/#/profile' (프로필 페이지)

#### 2) 라우트 가드 구현
- [ ] 로그인 상태에 따른 접근 제어
- [ ] 비로그인 사용자의 특정 페이지 접근 시 로그인 페이지로 리다이렉션

#### 3) 이벤트 위임

- [ ] 이벤트 위임 방식으로 이벤트를 관리하고 있다.
#### 가상돔을 기반으로 렌더링하기

- [ ] createVNode 함수를 이용하여 vNode를 만든다.
- [ ] normalizeVNode 함수를 이용하여 vNode를 정규화한다.
- [ ] createElement 함수를 이용하여 vNode를 실제 DOM으로 만든다.
- [ ] 결과적으로, JSX를 실제 DOM으로 변환할 수 있도록 만들었다.

#### 이벤트 위임

- [ ] 노드를 생성할 때 이벤트를 직접 등록하는게 아니라 이벤트 위임 방식으로 등록해야 한다
- [ ] 동적으로 추가된 요소에도 이벤트가 정상적으로 작동해야 한다
- [ ] 이벤트 핸들러가 제거되면 더 이상 호출되지 않아야 한다

### 심화 과제

#### 1) Diff 알고리즘 구현

- [ ] 초기 렌더링이 올바르게 수행되어야 한다
- [ ] diff 알고리즘을 통해 변경된 부분만 업데이트해야 한다
- [ ] 새로운 요소를 추가하고 불필요한 요소를 제거해야 한다
- [ ] 요소의 속성만 변경되었을 때 요소를 재사용해야 한다
- [ ] 요소의 타입이 변경되었을 때 새로운 요소를 생성해야 한다

#### 2) 포스트 추가/좋아요 기능 구현

- [ ] 비사용자는 포스트 작성 폼이 보이지 않는다
- [ ] 비사용자는 포스트에 좋아요를 클릭할 경우, 경고 메세지가 발생한다.
- [ ] 사용자는 포스트 작성 폼이 보인다.
- [ ] 사용자는 포스트를 추가할 수 있다.
- [ ] 사용자는 포스트에 좋아요를 클릭할 경우, 좋아요가 토글된다.

## 과제 셀프회고

Expand Down

0 comments on commit cc286d7

Please sign in to comment.