Typing Game 만들기 프로젝트 리뷰

나는 이걸 왜 하는가?

  • DOM 건드리는 바닐라 JS를 배웠으니 이제 직접 실습해보기 위해
  • 상태관리가 무엇인지 공부하기 위해
  • GIT으로 협업하는 방법을 익히기 위해

프로젝트 결과물

삽질의 과정

3개의 HTML 파일에서 같은 상태를 바라보게 하기

  • 하나의 모듈파일에 상태 넣어두고 여러 JS파일에서 import하면 참조되겠지?

    • 안 돼. 그럴 생각 없어. 돌아가.
    • 각 HTML 파일에서 로드된 JS파일의 실행 컨텍스트는 각각 만들어지고, 그 파일들이 import한 모듈 컨텍스트는 각각의 실행컨텍스트 위에 새로이 만들어져 쌓인다.
    • 게임 페이지에서 import한 state.js 모듈과 랭킹 페이지에서 import한 state.js 모듈은 파일명만 같지 새로운 모듈스코프를 생성했기 때문에 상태 공유가 불가능하다.
  • 그렇다면 어떻게 같은 상태를 바라보게 할 수 있을까?

    • 하나의 HTML에서만 가능하니까 SPA로 만들기
    • localStorage에 담아서 페이지 이동할때에도 달고 다니기
  • 우리는 어플 규모가 작기도 하고, 모듈로 상태를 공유할 수 있을 거라는 믿음으로 HTML을 나눠 작업했기 때문에 그냥 localStorage에 담아두고 매 페이지에서 getItem 해서 가져오는 것으로.

회고

피드백

  • 에러메시지 뜨거나 스크롤바 뜰 때 덜컹거리지 않게 할 것, 에러메시지 안보이니 접근성 위반하지말고 명도 조절할 것, margin 좀 넉넉하게 줄 것
  • 발표하는 자료인데 제대로 잘 정리해서 준비할 것

좋았던 점

  • 그동안 모호한 개념이었지만 알아볼 기회가 없었던 상태관리에 대해 공부할 수 있었다.
  • SPA를 왜 쓰는지 알게되었다. 서버에 저장할 게 아니라면 상태 들고다니기 너무 귀찮음.
  • 확실히 팀플을 하니 git 사용하는 것이 점점 익숙해졌다.
  • 로그인이나 서버에의 데이터 저장 등 확장가능성이 있는 프로젝트라 좋다.

느낀 점/아쉬운 점

  • JS 코드 구현 연습용 미니프로젝트라고 안일하게 생각하고 토픽이나 스타일링 신경 안썼는데 호되게 혼났다. 다른 팀들이 얼마나 아이디어와 스타일링에 신경썼는지도 감명과 자극을 받았다. 결국 유저에게 제공되는 것은 화면인데, 프로페셔널하지 않게 프로젝트를 대한 것이 부끄러웠다.
  • 여전히 github에서 제공하는 project와 issue를 잘 사용하지 못해서 아쉽다.