[14팀 박휘정] Chapter 1-1. 프레임워크 없이 SPA 만들기 #66
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
과제 체크포인트
기본과제
1) 라우팅 구현:
2) 사용자 관리 기능:
3) 프로필 페이지 구현:
4) 컴포넌트 기반 구조 설계:
5) 상태 관리 초기 구현:
6) 이벤트 처리 및 DOM 조작:
7) 라우팅 예외 처리:
심화과제
1) 해시 라우터 구현
2) 라우트 가드 구현
3) 이벤트 위임
과제 셀프회고
기술적 성장
MPA 방식으로 일해와서 그동안 페이지 별로 디렉토리를 짜왔다. 그래서 그런지 �리엑트의 프로젝트 구조가 낯설었는데, 컴포넌트와 라우터를 만들고 각자 역할에 맞게 코드를 쪼게다 보니 ( 비록 성공적으로 나누지는 못했지만.. ) 리엑트 프로젝트의 폴더 구조가 어떤 근거로 나누어져있는지 깨닫게 되는 시간이였다.
observer를 처음으로 사용해봤다. ( 테스트 코드 통과를 자꾸 실패해서 PR 코드에는 없음 ) 그동안 값을 변경하고 이후에 이벤트를 등록하기 위해 비동기 통신을 쓰기도 하고 함수에 함수를 체인처럼 이어서 얼마나 많은 삽질을 했던가.. observer를 사용하니 값이 변하면 리렌더링 시키는 코드를 작성할 수 있었다. 리엑트의 useState를 질투하기만 했던 지난 날을 반성하며, 회사에서도 observer를 사용해보았다. 대박이다. 기본기를 좀 더 다져야겠다는 결심이 선다. javaScript는 내 생각보다 훨씬 파워풀했다.
코드 품질
공개하고 싶지 않을 정도의 코드 품질이라고 생각한다. 테스트 코드가 통과하는지 확인하면서 리팩토링을 하는 것이 굉장히 간편하게 느껴지기도 했지만, 막판엔 모든 걸 포기하고 돌아가기는 했던 코드로 되돌린 다음 PR을 날렸다.(근데도 테스트 코드 통과를 못했..) [작동하지 않는 이쁜 코드 === 이쁜 쓰레기] 라는 학습메이트의 말이 위로가 되었다. 이미 과제는 제출했고 기한은 지났지만, 여유가 있는 금요일 다시 한번 내 코드를 천천히 보고 고쳐봐야겠다.
학습 효과 분석
내가 이해한 MPA 방식의 프로젝트에서 사용하는 디렉토리 구조
내가 이해한 SPA 방식의 프로젝트에서 흔히 사용하는 디렉토리 구조
MPA 방식에서는 html 파일 ( 페이지별 ) 로 나눠서 디렉토리 구조를 짜는 반면, SPA 방식에서는 관심사 별로 디렉토리 구조가 나뉘어있다는 것을 알았다. 공통적으로 사용하는 함수를 어떤 방식으로 사용하느냐의 문제 같은데, SPA 방식이 재사용성이 높아 보인다.
현재 회사에서는 정적 리소스를 관리하는 폴더가 따로 있는데, 이 폴더의 구조를 SPA 디렉토리 구조에 영감을 받아서 리팩토링 해보고 싶다는 생각이 들었다. 프로젝트를 리엑트로 점진적 마이그레이션을 하고자 하는 마음도 있었는데 스택을 바꾸지 않더라도, CSR과 SSR이 적절하게 융합된 형태의 서비스를 만들 수 있을 것 같다는 �생각이 든다.
끝으로, 주말시간을 좀 더 투자했어야한다는 생각이 들었다. 주중에는 야근이니 회식이니하는 변수가 많았다. 다음 발제부터는 일요일을 최대한 투자해서 과제 통과에 급급한 상황을 만들지 말아야겠다.
과제 피드백
테스트 코드 내용과 제공 받은 코드 내용이 상이한 것이 있어, 테스트 통과가 되지않아 조금 햇갈렸습니다만, 덕분에 팀원들과 테스트 코드를 뜯어보는 좋은 계기가 되었습니다.
리뷰 받고 싶은 내용