📚요약
지난 시간에 회고를 하면서 찾았던 부족한 부분을 채워나가고 있었습니다. 이번 시간에도 이어서 진행해 보겠습니다.
📖Book Store 프로젝트
📄리뷰 기능
현재 백엔드의 기능에는 리뷰에 대한 부분이 구현되어 있지 않습니다. 이를 모킹 서버와 가짜 데이터를 활용해 백엔드에서 구현은 안 되었지만 프론트에서 화면을 구현하는 것을 해보겠습니다.
📑모킹 서버(Mocking Server) with. MSW
모킹이란 임시로 없는 것을 있는 것처럼 만들어서 사용하는 것입니다. 테스트를 할 때에도 사용되지만 프론트에서 개발을 진행하다 보면 백엔드의 개발이 마무리되지 않을 때가 있습니다. 그럴 때 임시로 API의 응답을 만들어서 사용하는 것 또한 모킹입니다. 모킹을 하는 경우 단순하게 데이터만 만들어서 사용할 수도 있지만, 프론트는 서버에 요청을 보내는 것까지 확인을 해야 합니다. 그렇기에 나온 것이 모킹 서버입니다.
MSW
MSW는 모킹 API를 만들기 위해서 사용되는 라이브러리입니다.
- 라이브러리 설치 : npm i msw --save-dev
- 폴더 초기화 : npx msw init public/ --save
- 기본 설정
- Mocking API를 만든다. in mock/api.ts
- 만든 API를 worker에 등록한다. in src/mock/browswer.ts
- 앱이 실행될 때 실행될 수 있도록 해준다. in index.ts

자세한 내용은 사이트에서 확인할 수 있습니다.
Mock Service Worker
API mocking library for browser and Node.js
mswjs.io
📑가짜 데이터 만들기 with. Fakerjs
백엔드 강의 시간에 랜덤 유저 데이터 만들기를 해보면서 사용해 봤던 fakerjs를 이용해 모킹 서버에서 사용할 mock data를 만들어보겠습니다. Fakerjs는 다양한 가짜 데이터를 만들 수 있도록 여러 가지 API를 제공하는 도구입니다.
자세한 내용은 사이트에서 확인할 수 있습니다.
Faker
Faker Generate massive amounts of fake (but realistic) data for testing and development.
fakerjs.dev
🍯tip! form 태그를 사용해 입력된 값을 받아오는 경우 보통 string으로 값이 들어온다. 하지만 useForm()을 사용하면 valueAsNumber로 string값을 number로 변경해서 받아올 수 있다.
📄다양한 UI 경험
다양한 UI를 다른 라이브러리를 최소한으로 사용해 react에서 제공되는 기능으로 만들어 봅니다.
📑드롭다운
드롭다운이란 클릭하면 메뉴가 하단으로 펼쳐지는 것을 의미합니다.
🍯tip! 바깥을 클릭해서 무언가 동작하게 하려면 ref를 활용하게 된다. 이때 ref의 current에 있는 contains() 함수를 사용하면 해당 컴포넌트 바깥을 구분할 수 있다.
📑탭
화면이 너무 길어지는 경우 탭 목록을 이용해 구분해서 정보를 제공해 한 화면에 보이게 할 수 있습니다. 탭을 감싸는 Tabs와 내부에 들어가는 Tab 컴포넌트는 다른 파일에서 구현할 수 있지만 편리함을 위해 한 파일에서 구현할 수 있습니다.
📑모달
모달은 화면을 바꿔 다음 동작을 진행하는 것이 아닌 기존 화면에 화면을 띄워 동작하는 것을 의미합니다.
🍯tip! 자주 사용되는 중복 코드는 커스텀을 훅을 활용해 중복을 제거할 수 있다.
📑토스트 메시지
토스트 메시지는 모달과 비슷하게 화면 위에 화면을 띄워 정보를 제공하거나 동작하는 것을 말하는데, 모달과의 차이점은 더 단순한 상황에 사용한다는 것입니다. 모바일에서 화면에 하단이나 상단에 성공 메시지나 실패 메시지가 잠깐 나타났다가 사라지는 것을 생각하면 이해하기 편합니다.
🍯tip! react-dom에서 제공하는 createPortal을 활용하면 최상위에 그려져야 할 모달이나 토스트 같은 컴포넌트의 위치를 조정할 수 있다.
📑무한 스크롤 with. IntersectionObserver
무한 스크롤이란 쇼핑몰의 상품 목록 같이 제공해야 할 정보가 많을 때 스크롤을 통해 서버에서 정보를 받아와 화면에 그려주는 것을 말합니다. 이번 프로젝트에서는 TanStack Query에서 제공해 주는 useInfiniteQuery와 화면을 감시하는 것을 도와주는 Web API인 IntersectionObserver를 활용해서 구현해 보겠습니다.
자세한 코드는 Github에서 확인할 수 있습니다.
ProgrammersSchool/FE-BOOKSTORE/bookstore at main · nulzi/ProgrammersSchool
프로그래머스 데브코스에서 학습하는 것들을 모아두는 레포. Contribute to nulzi/ProgrammersSchool development by creating an account on GitHub.
github.com
다음 시간에 계속...
출처 & 참고
문윤기 강사님의 강의
웹 개발에서의 모킹 전략 실제 적용 사례, f-lab ai, 2024.07.25
'개발 > 프로그래머스 데브코스' 카테고리의 다른 글
| 프로그래머스 데브코스 16주차 회고 with. TS 웹 풀스택 (3) | 2024.07.26 |
|---|---|
| 프로그래머스 데브코스 80일차 with. TS 웹 풀스택 (0) | 2024.07.26 |
| 프로그래머스 데브코스 78일차 with. TS 웹 풀스택 (0) | 2024.07.24 |
| 프로그래머스 데브코스 77일차 with. TS 웹 풀스택 (0) | 2024.07.23 |
| 프로그래머스 데브코스 76일차 with. TS 웹 풀스택 (2) | 2024.07.22 |