-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[6팀 남궁철] [Chapter 1-2] 프레임워크 없이 SPA 만들기 #3
base: main
Are you sure you want to change the base?
Conversation
3 한 함수 내에서 조건문이 많은 건 문제가 되지 않습니다. depth가 1개이니 이 경우는 조건문은 문제없습니다. if문 내부의 코드가 복잡해진다면 코드로 변경할 수 있고, if의 괄호내의 조건이 복잡해진다면 이 역시 함수로 분리할 수 있습니다. 지금 코드 분량에서는 충분히 적절해보이며 배열처리, props처리 등등은 향후 코드가 길어진다면 함수로 분리하면 좋겠네요. 수고하셨습니다. |
코드 중간중간에 주석을 달아주셔서 코드 흐름 파악이 잘 되어 술술 읽혔습니다! |
// 이벤트 리스너 설정 | ||
export function setupEventListeners(root) { | ||
// 이벤트 타입 반복 | ||
Object.values(EVENT_TYPES).forEach((eventType) => { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오... 이벤트 핸들러 문자열 처리할 때, 3번째 글자를 변경하지 않고도 처리할 수 있군요..!
주석이 잘 달려있어서 코드 파악이 편한 것 같아요! WeakMap을 왜 사용해야하는지 조금씩 이해되네요..! 이번주도 수고하셨습니닷! |
child !== null && child !== undefined && typeof child !== "boolean", | ||
); | ||
|
||
// type가 함수일 경우 (class도 포함) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
코드 주석 덕분에 이해하는 데 큰 도움이 되었습니다! createVNode는 단순히 VNode만 처리하는 역할을 한다고 합니다. normalizedVNode에 함수형을 처리하는 로직이 있다면 함수형을 처리하는 분기처리는 빼도 된다고 알고 있습니다!
과제 체크포인트
기본과제
가상돔을 기반으로 렌더링하기
이벤트 위임
심화 과제
1) Diff 알고리즘 구현
2) 포스트 추가/좋아요 기능 구현
과제 셀프회고
기술적 성장
코드 품질
특히 만족스러운 구현
이벤트 핸들러 관리
const eventHandlers = new WeakMap();
이벤트 위임 및 버블링 구현
리팩토링이 필요한 부분
현재 diff 알고리즘에서는 단순 비교만 수행하고 있습니다, 하지만 React에서는 key를 활용해서 더 효율적인 리스트를 비교하는 방법으로 작동한다는 것이 생각나서 이 부분들을 적용해보면 React에 대해서 더 상세한 이해가 되지 않을까 하는 생각이 있습니다.
코드 설계 관련 고민과 결정
이벤트 리스너를 초기 설정을 어디에서 하는게 좋을까 하는 고민이 많았습니다. 원래는 render.js에서 하는게 맞지 않나 하는 생각이 있었으나, 테스트가 독립적으로 구성되어 통과를 못하는 사례가 있었고, 컴포넌트의 라이프 사이클과 함께 이벤트핸들러가 관리되어야 할 것 같다는 고민으로 renderElement에서 초기 설정을 하도록 구성했습니다.
학습 효과 분석
과제 피드백
리뷰 받고 싶은 내용
앞서 말한 리스트를 key방식으로 업데이트를 하는것 혹은 더 나은 diff 알고리즘 구현 방식이 있을까요?