참여 인원 (이미지 클릭시 개인 레포지토리로 이동)
[팀장]정재훈 | 김인태 | 김항래 | 박희주 | 오강산 | 이미란 | 정진우 | 현승범 |
역할
각자 구현해보고 BestPractice를 산출한뒤에 리팩토링하거나 부족한 부분을 채우는 형식으로 진행하였습니다.
$ git clone https://github.com/wanted-team-11/pre-onboarding-assignment-week-5-1-team-11.git
# 프로젝트 root에 있는 "assignment-api.zip"파일의 압축을 풀어 서버 실행(해당 readme 참고)
$ cd pre-onboarding-assignment-week-5-1-team-11
$ npm install
$ npm start
-
선정 이유
- React
- Virtual DOM을 활용하여 빠른 렌더링이 가능
- 단방향 데이터 바인딩을 통한 디버깅이 용이
- TypeScript
- 정적 타입 지원하므로 컴파일 단계에서 오류를 사전에 포착할 수 있으며 이를 통해 미리 디버깅이 가능함
- 여러가지 패러다임을 활용할 수 있음 (절차지향, 객체지향, 함수형)
- Styled-Components
- CSS-in-JS는 짧은 길이의 유니크한 클래스를 자동적으로 생성하기에 코드 경량화에 효과적
- 스크립트에성의 상수와 함수를 쉽게 공유하여 props를 활용한 조건부 렌더링에 용이
- 컴포넌트화 시켜 다른곳에서 사용 가능
- 컴포넌트 기반 개발 방법에 적합하고 가장 많이 사용되는 CSS-in-JS 라이브러리
- React
//src
├── App.tsx
├── assets
│ ├── Doctors.svg
│ ├── Engineer1.svg
│ ├── Engineer2.svg
│ └── SearchIcon.svg
├── components
│ ├── BlueArea.layout.tsx
│ ├── DoctorImage.component.tsx
│ ├── EngineersImage.component.tsx
│ ├── HighlightedText.component.tsx
│ ├── SearchBox.component.tsx
│ └── SearchResultList.component.tsx
├── hooks
│ └── useDebounce.ts
├── index.tsx
├── react-app-env.d.ts
├── styles
│ └── GlobalStyles.styled.tsx
├── types.ts
└── utils
└── search-result-cache.ts
- 사용자가 입력한 텍스트와 일치하는 부분 볼드처리
- 예)
- 사용자 입력: 담낭 추천 검색어: 담낭의 악성 신생물, 담낭염, 담낭의 기타 질환, 달리 분류된 질환에서의 담낭, 담도 및 췌장의 장애
- 예)
- 검색어가 없을 시 “검색어 없음” 표출
- API 호출별로 로컬 캐싱 구현
- 캐싱 기능을 제공하는 라이브러리 사용 금지(React-Query 등)
- 캐싱을 어떻게 기술했는지에 대한 내용 README에 기술
- 입력마다 API 호출하지 않도록 API 호출 횟수를 줄이는 전략 수립 및 실행
- README에 전략에 대한 설명 기술
- API를 호출할 때 마다
console.info("calling api")
출력을 통해 콘솔창에서 API 호출 횟수 확인이 가능하도록 설정
- 사용법 README에 기술
- cache 구현
- 캐싱 기능을 하는 클래스 구현
- localCache(멤버변수): 캐시 데이터를 담고있는 private 멤버 변수.
- query(메소드): 새 데이터를 요청하거나 캐시의 값을 리턴한다
- getSearchResults(메소드): 주어진 uri에 대한 데이터를 요청한다(GET).
- setCache(메소드): 캐시값을 localCache에 할당하고 invalidate시간(1분)을 설정한다.
- invalidate(메소드): 캐시값을 localCache로부터 제거한다.
- 클래스 인스턴스 생성 & export => 이를 활용해 데이터 요청
- debounce
- 입력이 완료된 후 200ms가 지났을 때 서버에 데이터를 요청하도록 한다.
- 만일 200ms가 지나기 전 input change가 발생할 경우, 타이머를 리셋시킨다.
2022-09-28.10.14.58.mov
사용법 :: 검색어 입력창에 focus가 있는 상태에서 키보드 방향키 아래 키나 위 키를 입력.
-
검색창 아래에 출력된 검색 목록에서 선택된 항목의 배경 색상 변함
-
실제 focus가 변하는 것은 아니지만 키보드로 선택된 값을 새로 쿼리를 보내지 않으면서 input value를 수정해 사용자 경험 개선을 도모함
- 검색어를 기준으로 문자열을 split한 뒤 나뉘어진 원소들 뒤에 각각 map으로 검색어를 붙인다. 가장 마지막 원소는 제외한다.
Type | Description |
---|---|
feat | Add a new feature |
fix | Fix the bug |
design | UI design changes such as CSS |
style | code formatting |
refactor | Refactoring the code |
docs | Modify the document |
chore | etc. |