Skip to content
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

[29기 박겸영] 필수 항목 구현 / 댓글 좋아요, 삭제 기능 #187

Closed
wants to merge 9 commits into from

Conversation

seoltang
Copy link

@seoltang seoltang commented Jan 5, 2022

:: 최근 작업 주제 (하나 이상의 주제를 선택해주세요.)

  • 기능 추가
  • 리뷰 반영
  • 리팩토링
  • 버그 수정
  • 컨벤션 수정

:: 구현 목표 (해당 브랜치에서 구현하고자 하는 하나의 목표를 설정합니다.)

  1. 로그인 페이지 레이아웃
  2. id, pw 입력 시 로그인 버튼 활성화 기능
  3. 메인 페이지 레이아웃
  4. 댓글 내용 입력 후 Enter press, 혹은 게시 버튼 클릭 시 댓글 추가 기능

:: 구현 사항 설명 (작업한 내용을 상세하게 기록합니다.)

  1. login page
  • id, pw 입력 시 로그인 버튼 활성화 기능

    • id와 pw 둘 중 하나라도 값이 입력되지 않으면 로그인 버튼 비활성화(disabled = true)
    • id, pw 둘 다 값이 입력되면 로그인 버튼 활성화(disabled = false)
    • css에서 :disabled 선택자에 배경색과 커서 모양이 변경되도록 속성을 부여함
  • 로그인 시 id 저장 및 메인 페이지로 이동 기능

    • 로그인 버튼 클릭 또는 Enter press 시, id로 입력받은 값을 session storage에 저장하고 메인 페이지로 이동
    • 자동로그인이 아니기 때문에 id 값을 local storage가 아닌 session storage에 저장함
  1. 메인 페이지
  • 레이아웃

    • 스크롤 시 내비게이션 바와 우측 메뉴는 고정(position: fixed)되고 피드만 스크롤되도록 함
  • 검색창에 입력 중일 때 돋보기 아이콘 숨기는 기능

    • 검색창에 position: relative 속성, 돋보기 아이콘에 position: absolute 속성을 부여하여 위치를 조정함
    • 검색창이 포커스(focus event)되면 돋보기 아이콘에 display: none인 클래스를 추가하고, 포커스되지 않으면(blur event) 클래스를 삭제함
  • 좋아요 버튼 토글 기능

    • 좋아요 버튼 클릭 시 채워진 하트/빈 하트로 변경
  • 사용자 id 표시 기능

    • 로그인 페이지에서 저장했던 id 값을 불러와서 우측 메뉴 상단 프로필에 표시
  • 댓글 게시 기능

    • 댓글 내용이 입력되지 않았을 때는 게시 버튼이 비활성화되고, 내용이 입력되면 게시 버튼 활성화됨. (로그인 페이지와 동일한 방식)
    • 댓글 내용 입력 후 Enter press, 혹은 게시 버튼 클릭 시 댓글이 들어갈 elements를 동적으로 생성하여 댓글 추가. 이때, login page에서 session storage에 저장했던 id 값을 불러와서 댓글 작성자로 표시함.
    • 새로고침 시 댓글이 사라지는 것을 방지하기 위해, 댓글을 게시할 때 댓글 내용과 id를 local storage에 배열로 저장함.
    • 페이지를 새로 불러올 때, 만약 local storage에 저장된 댓글 값이 있다면 반복문을 통해 댓글을 작성한 id와 댓글 내용을 순차적으로 모두 불러와 동적으로 elements를 생성하고 댓글이 추가되도록 함.
    • 코드의 중복을 피하기 위해, 댓글이 들어갈 요소를 동적으로 생성하는 코드를 함수로 만들고, 댓글 작성자 id와 댓글 내용을 함수의 파라미터로 설정함. 페이지 로드 시 기존 댓글을 불러올 때와 새 댓글을 추가할 때 각각 함수의 인자를 다르게 넣어줌으로써 같은 함수를 통해 댓글 요소를 생성할 수 있도록 함.
  • 댓글 좋아요, 삭제 기능


:: 성장 포인트 (해당 기능을 구현하며 고민했던 사항이나 새로 알게된 부분, 어려웠던 점 등을 작성합니다.)

  • 이전에 배웠던 변수의 스코프를 어디까지 적용하는 것이 좋을지 고민하고 전역변수와 지역변수를 나누게 되었습니다.
  • 댓글 게시 기능에서 createElementappendChild를 연습해볼 수 있었습니다.
  • 검색창 돋보기 아이콘 숨기기/보이기를 구현하며 input에서 포커스를 감지하는 focus, blur 이벤트(버블링되지 않음)를 알게 되었습니다.
  • 레이아웃을 만들 때 div 안의 div가 많아지고 각각에 css 클래스를 부여하다 보니 클래스가 많아져서 이름 짓기가 까다로웠습니다.
  • css 속성을 일정 순서에 따라 리팩토링했습니다.
  • javascript에서 구현한 기능을 주석 대신 함수명으로 설명할 수 있게 되었습니다.
  • form 요소를 javascript에서 불러올 때, document.forms.name 또는 document.forms[i]와 같이 form의 이름이나 순서로 불러올 수 있고, elements 메서드로 form 태그 안의 하위 요소-input, button 등-에 접근할 수 있음을 알게 되었습니다.
  • session storage와 local storage에는 문자열만 저장할 수 있지만, JSON을 통해 배열을 문자열로 변환하여 저장하고 문자열을 배열로 변환하여 불러올 수 있음을 알게 되었습니다.

:: 기타 질문 및 특이 사항

  • bug: 댓글 input textarea 입력 시 줄바꿈이 되지 않는 현상이 있습니다. width 또는 word-break로 해결이 되지 않습니다.
  • error: 댓글 삭제 기능 보완 필요. 댓글 삭제 시 삭제한 댓글의 id와 댓글 내용 데이터도 삭제해야 하는데, 인덱스를 불러오지 못함.

- Modify: nav position을 fixed로 변경
- Modify: 프로필 이미지를 pink로 변경
@seoltang seoltang changed the title [29기 박겸영] Add: 현재까지 작업한 코드 [29기 박겸영] login, main 필수 구현 Jan 5, 2022
@seoltang seoltang changed the title [29기 박겸영] login, main 필수 구현 [29기 박겸영] login, main 필수 항목 구현 Jan 5, 2022
- html img alt 속성 추가
- html img 속성에서 alt가 src보다 먼저 오도록 순서 변경
- css 속성 순서 변경
- css 줄바꿈
- 불필요한 id를 class로 변경
- javascript 주석 삭제
- javascript 함수로 블록 설정
- 댓글 게시 시 댓글과 id를 localStorage에 저장하고 새로고침 시 저장된 데이터를 불러와서 기존에 작성한 댓글이 보이도록 함
- localStorage에 id와 댓글 내용을 각각 배열로 저장해서 로그인한 id에 따라 댓글 작성자 id가 다르게 표시되도록 함
@seoltang seoltang changed the title [29기 박겸영] login, main 필수 항목 구현 [29기 박겸영] 필수 항목 구현 / refactoring / 댓글 기능 보완 Jan 6, 2022
- 댓글 좋아요, 삭제 기능 추가
- bug: 댓글 삭제 시 local storage에 있는 댓글 데이터를 삭제해야 하는데, 배열 인덱스를 불러올 수 없음
@seoltang seoltang changed the title [29기 박겸영] 필수 항목 구현 / refactoring / 댓글 기능 보완 [29기 박겸영] 필수 항목 구현 / 댓글 좋아요, 삭제 기능 Jan 7, 2022
-기존 댓글을 삭제할 수 있도록 수정하였으나 새 댓글을 삭제할 때 오류가 발생함.
-dataset으로 인덱스를 부여하였으나 댓글이 삭제될 때 변경된 인덱스가 반영되지 않기 때문으로 파악됨.
-dataset 외에 다른 방법 필요.
@bonbon0202 bonbon0202 closed this Feb 6, 2022
@yeonuk-hwang yeonuk-hwang deleted the feature/kyeom branch May 13, 2022 10:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants