티스토리 뷰
1. 문제 (과제, 프로젝트를 진행하면서 부딪혔던 기술적인 문제)
대표적으로 3가지로 분리할 수 있을 거 같다.
- 라우터 + 렌더 구현
직접 라우터를 구현하는 것이 예상보다 훨씬 어려웠다. 평소 프레임워크가 알아서 처리해주는 부분에 대해 새삼 감사함을 느꼈다...(따봉 Vue야 고마워!) 단순히 history.pushState()만 사용하면 될 줄 알았으나, 실제로는 화면 전환 로직을 따로 조정해야 했고... 렌더링 시점을 원하는 대로 컨트롤하기 어려웠고, 이 부분에서 큰 어려움을 겪었다.
- 배포
GitHub Pages는 프론트엔드 개발자가 쉽게 접할 수 있는 배포 서비스이자, 웹사이트를 무료로 호스팅하기도 쉬운 편이라 가볍게 생각했는데, 라우팅이 제대로 되지 않아 404 페이지에 막혀 고생길을 건넜다.
- 리팩토링
컴포넌트 단위로 분리하고 로직적인 부분을 나누면 되겠다 싶었는데 렌더 코드를 정리하는 게 너무 어려웠다. (이 부분은 아직까지 숙제라고 할 수 있지.)
2. 시도
1. Hash API 학습
- 개념이 생소해서 공식 문서와 관련 자료를 찾아보며 공부함.
2. GitHub Pages 404 오류 해결 시도
- 새로고침 시 404 페이지가 뜨는 문제를 해결하려고 다양한 방법을 시도함.
- 404.html을 활용한 리다이렉트 방식 적용
- 각 라우터 앞에 BASE_URL을 추가하는 방식 시도
3. 렌더 관련 코드 리팩토링
- eventHandler 파일들을 분리해 렌더와의 의존성을 줄이려고 했음.
- 하지만 렌더 함수 호출이 필요한 몇몇 함수에서 문제가 발생해 일부 코드를 다시 원래대로 되돌려놓음.
3. 해결
- 자료를 찾아서 완벽하게 이해하는 것보다, 직접 구현해보는 게 더 빠르다고 느낌.
- History API와 비교하면서 동작 방식을 테스트하고 차이를 경험해 봄.
// History API 방식
history.pushState(null, null, href);
render(); // 페이지를 새로 렌더링
// Hash API 방식
location.hash = href;
render(); // 페이지를 새로 렌더링
- 구글링과 함께 항해 디스코드 서버, 팀원들의 도움을 받음.
- GitHub Pages에 배포할 때 아래와 같이 설정해 경로 문제를 해결하려고 했음.
- 하지만 History API 기반 라우팅에서는 새로고침 시 서버가 해당 경로를 찾지 못해 404 오류가 발생.
- 흰 화면 뜨는 것으 막았다. (사실 완벽하게 구현했던 건 아닌 거 같다.)
base: "/front_5th_chapter1-1/"
- 공통으로 사용할 수 있는 페이지와 컴포넌트는 분리했음.
- 하지만 main과 main.hash.js 파일 내 render 관련 코드에는 거의 손을 대지 못했음.
프로젝트/
├── src/
│ ├── components/
│ │ ├── Header.js
│ │ ├── Footer.js
| | ├── PostInput.js
│ ├── pages/
│ │ ├── ErrorPage.js
│ │ ├── MainPage.js
│ │ ├── LoginPage.js
│ │ ├── ProfilePage.js
│ ├── state/
│ │ ├── state.js
│ ├── main.js
│ ├── main.hash.js
│ ├── eventHandler.js
├── package.json
├── vite.config.js
4. 알게된 것
- GitHub Pages 배포를 단순하게 생각했지만, 404 오류 문제를 해결하는 여러 가지 방법이 있음을 알게 됨.
- Vanilla Javascript 문법 중에 많이 부족한 부분들을 알게 되었음. 코드를 자유자재로 구현하려면 1주차에 좋은 글들을 추천 받았는데 열심히 읽어야겠다고 생각함.
- 코드 구조를 개선할 방법을 고민하던 중, Observer 패턴을 적용하면 리팩토링할 수 있다는 걸 알게 됨. 많은 분들이 그렇게 해놨더라...
- Hash API / History API 개념을 이해했다. 뭔지는 알겠어! 근데 잘 써먹을 수 있을까?
---
Keep : 현재 만족하고 계속 유지할 부분
오랜만에 퇴근하고 엉덩이를 붙이고 공부에 몰입하는 나를 볼 수 있었다.
공부하는 습관을 계속 들이는 게 좋을 거 같다. 어느 정도의 시간을 쏟는가가 중요한 게 아니라 1시간 아니 30분이라도 집중하는 습관을 들이는 게 좋다. 내가 원해서 스스로 공부를 하는 게 오랜만이라 공부가 재밌었다.
Problem : 개선이 필요하다고 생각하는 문제점
시간관리. 객관적으로 나를 바라볼 필요가 있다. 수면시간이 부족했던 나.
토요일에 첫 과제를 받았을 땐, 소화 못할 분량은 아닌데? 라고 생각을 해서 월요일까지 잠을 줄여가며 기본과제 구현 + 심화과제 대부분을 처리해놓고 심화과제(해시 처리)나 배포 부분을 뒤로 미루고 리팩토링을 시도했다.
수요일에 몸이 아파 링겔을 맞았고,,, 그 날은 지옥의 야근날이었다. (새벽 3시 퇴근)
중간에 맞이해버린 거대한 야근의 무덤에 빠져버려서 계획이 다 무너졌다.
목요일에 허겁지겁 리팩토링 + 배포를 끝마치고 PR을 작성했다. (원하는 만큼 리팩토링을 하지 못한 나.) 😓
Try : 문제점을 해결하기 위해 시도해야 할 것
시간분배를 잘하고 체력을 조절하자!
과제 내는 거 물론 중요하다. 하지만 내 건강이 더 중요하다. 최소 1시 이전엔 해결하고 잠을 자야겠다. 그래야 다음날에 더 나은 컨디션으로 일과 공부를 잡을 수 있으니깐. 그리고 시간 관리!
야근을 고려해서 할 수 있는 부분은 최대한 털어내는 게 좋을 거 같다. 1주차 과제에서 얻었던 초석들을 기반으로 하여 내가 빨리 할 수 있는 부분과 빨리 하지 못하는 부분들을 구분하여 파악하여 구현하는 것이 중요할 거 같다.
'항해 플러스 프론트엔드 5기 회고' 카테고리의 다른 글
[항해 플러스 프론트엔드 5기] 5주차 회고 (1) | 2025.04.27 |
---|---|
[항해 플러스 프론트엔드 5기] 4주차 회고 (0) | 2025.04.18 |
[항해 플러스 프론트엔드 5기] 1챕터 회고(솔직 후기) (1) | 2025.04.13 |
[항해 플러스 프론트엔드 5기] 2주차 회고 (0) | 2025.04.05 |
[항해 플러스 프론트엔드 5기] 시작하는 마음 (3) | 2025.03.22 |
- Total
- Today
- Yesterday
- 항해플러스5기
- 프론트엔드
- virtual dom
- 브라우저 렌더링
- 심층신경망
- 배치정규화
- 최적화문제
- 경력기술면접
- 항해99
- 자바스크립트개념
- edwith
- 프론트엔드개발자
- 하이퍼파라미터
- 가상돔
- 최적화알고리즘
- 5기
- 기술면접
- 이직
- 딥러닝
- 항해플러스프론트엔드
- SungKim
- 프론트엔드기술면접
- 모두를위한머신러닝딥러닝
- 항해플러스후기
- 경력
- 머신러닝
- 항해플러스
- 개발자
- 딥러닝2단계
- 항해솔직후기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |