이번 주차 목표는 가상 DOM을 정의하고, 이를 이용해 이벤트 관리를 최적화하고, diff 알고리즘을 통해 불필요한 렌더링을 최소화하는 것이었습니다.
🧙♂️ 멘토님 가라사대 "처음부터 모든 문제를 완벽히 해결할 수는 없겠지만, 리액트 같은 해결된 사례를 따라가면서 우리의 문제 해결 범위를 넓혀가는 과정을 배우고 있는 중입니다."
과제를 시작하기 전에 이 말을 들었을 때는 가벼운 마음이었는데, 과제를 마친 후 다시 보니 참 묘한 기분입니다. (그만큼 고생했기 때문ㅇ ㅔ ..)
과제 진행 중 가상 DOM을 직접 구현하면서 여러 어려움을 겪었습니다. 특히, DOM 요소를 업데이트하는 과정에서 제대로 작동하지 않거나, 이벤트가 예상대로 동작하지 않는 문제들이 발생했습니다.
과제를 보고, 무너져버린 저의 막막한 마음도 !! ㅜㅜ.. 문제였습니ㄷ
이를 해결하기 위해 팀원들과 함께 고민했습니다. 먼저, createElement
로 DOM을 생성하는 방식은 이해했지만, updateElement
에서 무엇이 잘못되었는지 하나씩 디버깅했습니다. 코드 흐름을 꼼꼼히 점검하고, 이벤트 버블링과 캡처링에 대해 다시 학습했으며, addEventListener
의 세 번째 인자에 대해 몰랐던 부분도 새롭게 알게 되었습니다.
eventManager를 직접 구현하고, 이벤트 위임 방식을 적용해 문제를 해결했습니다. 이를 통해 DOM 요소에 이벤트를 개별적으로 추가하지 않고도 효율적으로 관리할 수 있었으며, 메모리 사용도 줄이면서 성능이 개선되었습니다. 팀원들과의 협업을 통해 차근차근 해결할 수 있었습니다.
이번 과제를 통해 가상 DOM과 실제 DOM의 차이를 더 명확하게 이해하게 되었고, diff 알고리즘을 사용해 DOM 업데이트 시 불필요한 렌더링을 최소화하는 방법을 배웠습니다. 또한, 이벤트 버블링과 캡처링의 활용이 이벤트 처리에서 중요한 개념임을 다시 한번 깨달았습니다. 이벤트 위임
부분에 대해 추가적으로 공부하여 블로그에 정리할 계획입니다 ✍️.
이게 질문을 하거나 답변을 할 때, 바로바로 말로 정리해서 질문, 대답해드리고 싶은데, 잘 안되는 것 같습니다.
머리로 생각해둔 것들을 말로 잘 못 옮기는 것 같습니다. (스피치 능력 키우기 ..?)
팀원들 소통하는 것들 귀기울여 들어보고, (나라면? 대답 어떻게 할지, 시뮬레이터 돌려보고) 나도 조심스레 자연스레 껴보는 것
8주 뒤엔, 고수 팀원들과의 대화가 수월해질 나를 기대하며 !
맘우리 ~
핑핑이 아니고 티니핑이요 ^ㅡㅜ