Skip to content

Conversation

@sungahChooo
Copy link

@sungahChooo sungahChooo commented Sep 9, 2025

<vercel 배포 링크>

https://sungah-vanilla-todo-22nd-tpi2.vercel.app/

<구현기능>

vanilla-todo

1. 투두 추가 및 조회
할일을 입력하고 추가 버튼을 누르면 목록에 추가됩니다.
화면을 꺼도 local storage에 저장되어 다시 조회가 가능합니다.
추가 버튼 오른 편에 그날의 투두 개수를 볼 수 있습니다.
상단에 To do list 버튼을 누르면 현재 날짜를 기준으로 조회할 수 있습니다.

2. 투두 삭제
추가된 할일 옆에 삭제 버튼을 누르면 삭제할 수 있습니다.

3. 날짜별 조회
날짜를 누르면 그 날에 작성된 투두를 조회할 수 있습니다.

4. 전체 조회 버튼
날짜 관계없이 모든 투두를 조회할 수 있습니다.

<느낀점 및 배운점>

  • vercel 이용한 배포와 git hub fork 방식은 처음 사용해보아서 익히는데 어려움이 있었음
  • 디자인 부분을 잘 하고 싶은데 잘 되지 않아서 아쉬움
  • local storage와 session storage의 작동 방식을 알게되었고 코드로 구현하는 방식을 알게되었음
  • 버블링(Bubbling) & 캡처링(Capturing)의 개념을 알게되었음

1. DOM은 무엇인가요?

  • DOM(Document Object Model)은 HTML 문서의 구조를 브라우저가 객체 형태로 표현한 모델
  • JavaScript를 이용해 DOM 요소를 선택, 변경, 삭제, 추가할 수 있어 동적인 웹 페이지 구현이 가능

2. 이벤트 흐름 제어(버블링 & 캡처링)이 무엇인가요?

  • 버블링: 이벤트가 발생한 요소에서 시작하여 상위 요소로 전파되는 방식
  • 캡처링: 이벤트가 상위 요소에서 시작하여 하위 요소로 전달되는 방식

4. 클로저와 스코프가 무엇인가요?

  • 스코프: 변수와 함수가 유효한 범위. 예시: 전역 스코프, 함수 스코프, 블록 스코프
  • 클로저: 함수가 자신이 선언될 당시의 스코프를 기억하고 있는 구조. 이를 통해 함수 외부의 변수에 접근하거나 상태를 유지할 수 있음.

@sungahChooo sungahChooo changed the title html, js, css 파일 생성 [1주차] 조성아 과제 제출합니다. Sep 12, 2025
Copy link
Member

@lemoncurdyogurt lemoncurdyogurt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제일 먼저 과제 제출해주시고, 너무너무 수고하셨습니다! 기능적으로 문제는 없던 코드라서, ux적으로 고려하여 코드리뷰를 남겼던 것 같습니다.

  • 추가로 전체보기로 등록된 전체 할 일을 조회하는 경우에는 할일 전체 갯수가 나오지 않는데, 그것도 추가해주면 기능적으로 통일되어 보기 편할 것 같습니다.

다음 과제로 리액트라이브러리를 사용하여 투두만드신 것들을 리팩토링 하게 되는데 컴포넌트의 사용 이점을 느껴보실 수 있을 거에요! (다음과제도 1등하실건가요???~~! 기대해보겠습니다)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

전체보기를 통해서 모든 할 일들을 조회할 수 있는 점은 좋은 듯합니다. 하지만, 전체보기 후에 오늘 날짜를 보려면, 날짜 캘린더 들어가서 클릭 후, 날짜를 클릭해야한다는 점에서 사용자 ux측면에서 불편한듯합니다ㅠ

script.js Outdated
return;
}

const todo = { id: Date.now(), text, date };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

현재 todo id를 Date.now으로 저장하셨는데, 같은 밀리초안에 여러 투두를 등록하게 되는 경우, id가 꼬일 수 있습니다(동시성 문제).

date.now대신 uuid를 사용해보는 것을 어떠할까요?

http://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID

Copy link

@Wannys26 Wannys26 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

제가 좋아하는 깔끔하고 담백한 디자인이여서 좋았습니다!
미숙한 피드백일 수 도 있겠지만 잘 읽어주시면 감사하겠습니다

width: 30px;
margin-left: 10px;
font-size: large;
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

지금 inputDiv가 countDisplay div까지 포함되어 있는 상태라,
할 일 수가 0이거나 전체 보기를 누르면, 중앙 정렬이 안되는 거 같습니다!

Image

이 부분을 수정하려면

#countDisplay.hidden {
  display: none;
}

위 코드를 추가하시고,
할 일 갯수가 0이 되면 해당 클래스가 추가되도록, js에서도 수정해보시는 것도 좋을 것 같습니다!

@jungyungee
Copy link

안녕하세요..! 과제 잘 봤습니다 ㅎㅎ
깔끔한 디자인이라서 투두리스트와도 잘 어울리고 보기 편했던 것 같습니다..!
몇 가지 코드리뷰 남기겠습니당..!

@jungyungee
Copy link

우선 기능적으로 추가를 안하신 것 같은데 투두리스트이다 보니 할 일 완료했음을 표시하는 기능이 들어가면 더 좋을 것 같습니다..!
사용자 입장에서 삭제를 하면 아예 사라져버려서 어떤 일을 완료했는지 확인하기가 어려운 점이 아쉬울 수 있을 것 같아용

script.js Outdated
Comment on lines 66 to 69
resetBtn.addEventListener("click", () => {
renderTodos(todos);
countDisplay.textContent = "";
});

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이게 전체보기 버튼인데, 클릭하면 할일 개수가 사라지던데 그 기능이 맞는걸까요??
image

countDisplay.textContent = ""; 가 할일 개수를 빈 문자열로 바꾸는 거 같은데 어떤 기능인지 잘 모르겠습니다..
특히 다른 할일을 추가하면filterByDate(date);로 다시 개수는 업데이트 되어서 이 부분이 어떤 기능을 하는지 파악이 어려운 것 같습니다 ㅜㅜ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants