[인프런 워밍업 스터디 클럽 2기 FE] 조승연 1주차 발자국
Day2(자바스크립트 기초)
강의요약
독학으로 기본은 이미 학습했기에 따라가는 데 지장은 없었다.
그래도 기본 개념을 다시 복습하는 계기가 되었다.
과제(음식 메뉴 앱)깃허브 링크
요구 사항
카테고리별 아이템 설정
카테고리 클릭 이벤트 발생 시 해당 카테고리 아이템들 조회
전체 아이템 조회
결과
최초 실행 시 전체 아이템 display: none
카테고리 클릭 시 해당 카테고리 아이템 display: flex 조회
전체 아이템 조회 display: flex
회고
처음엔 createElement로 구현해야 하는 생각에 막막했고,
너무 비효율적이라 구글링을 통해 다른 방법을 생각했다.classList를 통한 css 설정으로 구현할 수 있단 걸 알게 되어 적용했다.
아무리 코드가 적어도 좀 묶어놓을 걸 싶다.
Day3(자바스크립트 중급 1)
강의 요약
대부분의 언어에서도 중요한 this와 자바스크립트 만의 클로저
구조 분해 할당을 통한 데이터 할당의 편의성
데이터 활용도를 높여주는 Map, Filter, Reduce
객체 활용도를 올려주는 메서드 bind, call, appply
과제(가위 바위 보 앱)
깃허브
요구 사항
매 회 컴퓨터는 랜덤하게 가위, 바위, 보 중 하나를 선정해야 함
매 회 사용자도 랜덤하게 가위, 바위, 보를 클릭 이벤트를 통해 선정해야 함
회차별 승패 여부를 점수로 기록
회차 기록
점수에 따른 최종 승패 여부 결정
결과
random() 메서드를 통해 컴퓨터가 3개 중 하나 선정
로직을 통해 승패 여부 결정 후 결과 기록
최종 승패 결정 후 Day1에서의 css를 통한 설정으로 결과 표시
회고
삼항 연산자로 하기에 좀 지저분 해 보여서 로직을 찾아봤는데 내 코드엔 맞지 않아 포기했다.
구현 자체는 쉬워 금방 했는데 DOM으로 가져온 데이터 부분이 커지길래 지저분 해져 깔끔할 방법이 없다 고심했다.
Day4(자바스크립트 중급 2)
강의 요약
그나마 책으로 공부한 게 있어서 이해하는 데 어려움은 없었다.
페이지 무한 스크롤, Intersection observer의 원리가 흥미로웠다.
즉시 실행 함수의 활용도가 진짜 높을 텐데 어떤 상황에서 활용하는 지가 좀 어려웠다.
과제(퀴즈 앱)
깃허브
요구 사항
랜덤한 숫자의 연산으로 퀴즈 생성
사용자는 보기 중에서 정답을 클릭을 통해 선택
선택한 보기가 정답일 경우
해당 보기만 초록색으로
화면 배경도 초록색으로
선택한 보기가 정답이 아닐 경우
틀린 해당 보기는 빨간색으로
정답 보기가 초록색으로
화면 배경도 빨간색으로
전체 회차 종료 재도전 여부 표시
결과
random() 생성자 함수를 생성하여 연산자와 숫자를 구분하여 선정
랜덤으로 뽑은 연산자와 숫자를 화면에 표시
표시된 연산의 결과를 정답 보기로 생성, 내부 로직으로 틀린 보기 생성 후 화면에 표시
사용자 클릭 시 보기 관련 요구 사항 css 설정으로 구현
회차 만료로 퀴즈 종료 시 재시작 선택 여부 확인 후데이터 초기화 후 다시 시작
회고
함수형으로 구현하려고 했는데 생각보다 쉽지 않았다.
계속 한 회차에 두 번 진행 되는 버그 발생. 원인은 함수형으로 구현하다 이벤트 리스너가 한 번 클릭 시 두 번 발생
해결 : 이벤트 리스너 함수를 독립적으로 생성하여 해결했다.
그래도 내 수준에서 요 정도 함수형으로 구현한 걸로 만족했다.
Day5(OOP, 비동기)
강의 요약
비동기는 개념을 모르는 상태에서 많이 써봐서 중요하단 건 알았지만, 생각보다 쉬웠다.
프로토타입은 책으로 봤을 때 너무 어려웠어서 몇 번을 다시 보면서 공부해서 잘 넘어갔다.
클래스를 써보고 싶었는데 잘 엄두가 안났다. 담주에 할 땐 함 써보자.
과제(책 리스트 나열 앱)
깃허브
요구 사항
사용자가 입력한 데이터를 화면에 표 형식으로 표시
해당 데이터 저장 공간에 저장(Map or Local Storage)표시된 표 형식의 데이터의 마지막 컬럼에 버튼으로 해당 행 삭제
결과
form으로 사용자의 input 데이터를 받고, submit 이벤트 리스너 발생
해당 이벤트 일시 정지를 위한 preventDefault() 함수 실행
createElement로 데이터와 삭제 버튼을 생성하여 화면에 표시
삭제 버튼 클릭 시 해당 행 삭제하는 이벤트 발생
데이터 표에 추가 및 삭제 시 메세지 표시 후 비동기 setTimeout() 함수로 종료
회고
이미 구현 해봤던 내용이라 간단했다.
Day6(OOP, 비동기)
강의 요약
비동기는 개념을 모르는 상태에서 많이 써봐서 중요하단 건 알았지만, 생각보다 쉬웠다.
프로토타입은 책으로 봤을 때 너무 어려웠어서 몇 번을 다시 보면서 공부해서 잘 넘어갔다.
클래스를 써보고 싶었는데 잘 엄두가 안났다. 담주에 할 땐 함 써보자.
과제(GihHub Finder 앱)
깃허브
요구 사항
사용자의 입력과 동시에 실시간 검색
프로필, Repository 수, 팔로워/팔로잉 수 등 데이터 화면에 출력
Repository 나열 후 클릭 시 해당 Repository로 이동
결과
이벤트 리스너 input 설정과 async/await으로 비동기 실시간 검색 구현
fetch로 URL req 전송 후 Promise.all()로 res 동시에 받기
각 Repository 화면에 나열
회고
깃허브 API에 대한 내용을 공식 홈페이지에서 확인 해도 헷갈리는 부분이 많아 다른 사람 코드를 참고 했다.
처음 문서를 잘못 봐서 되게 복잡하다 생각했는데 막상 코드를 보니 굉장히 쉬운 거였다.
보니 요청 횟수가 정해져 있어 토큰을 발급 받아 fetch 헤드에 담아 전송해야 했는데 몰라서 좀 헤맸다.
그 분 코드에 굳이 DOM 데이터를 변수에 담아 할 필요는 없다는 걸 깨닭고 실행에 옮겼다.
댓글을 작성해보세요.