이전에 했던 팀 프로젝트에서는 프로덕트의 일부만을 담당해서 맡은 부분에 대한 경계라거나, 구현해보지 못했던 기능에 대한 아쉬움이 남아있었다. 이번에는 백엔드1, 프론트엔드1로 구성된 팀으로 프론트 파트를 혼자서 모두 담당해보려고 한다.
gocamp는 네이버 map api와 공공데이터(국내 야영장 데이터) api를 활용하여 국내 야영장의 위치와 간단한 정보를 알려주는 서비스이다.
gocamping이란 비슷한 서비스가 존재하나, UI 측면에서 더 세련되게 해볼 수 있을 것 같아서 만들어보려고 한다.(google map을 따라하는 수준이겠지만..?)
CSR - React
- 이번에는 서버사이드렌더링이 중요한 서비스가 아니기도하고 아직 순수 react 프로젝트를 제대로 해본 적이 없어서 next.js가 아닌 react를 사용해보려고 한다. 그래서 프로젝트 하는 김에, react의 동작 원리라거나, 구성 요소, hook, react18 버전 활용 등등 실험해볼 수 있는 건 다 해보면서 프로젝트를 진행하려고 한다.
CSS - Emotion
- 이번에도 이모션을 사용한다. 사용 이유는 이전과 유사하다.
- jsx 문법에서 html을 바로바로 확인할 수 있는게 가독성 면에서 더 좋다고 느껴지고, css props를 더 잘 활용해보고 싶기 때문이다.
- 위에서 말한 것 같이 이번에는 emotion을 단순히 nested된 css로만 활용하는 것이 아니라 함수형으로 활용해서 재사용성, 효율성을 더 올려보고 싶다.
상태 관리 - recoil
기존에는 react-query(server state)와 recoil(client state)을 같이 사용해보려고 했지만, 두 개를 찍어먹어보는 수준만 될 것 같아서 차라리 recoil를 제대로 공부하면서 사용해보려고 한다.
기존에 사용했던 redux에서는 아래와 같은 불편함을 느꼈다.
- api 작성의 번거로움 비동기 작업 시 모든 상태에 대해 정의해줘야함
- store 세팅이 복잡하고 무거움.(미들웨어,next.js 호환 등)
- 위와 비슷한 이유로 next.js에 친화적인 라이브러리가 아님.(앞으로 next.js를 많이 사용할 예정이기 때문에)
recoil을 아직 사용해보지 않아서, 이게 더 좋다고 말할 순 없지만, 서칭해본 결과 redux보다 훨씬 간결하고, 단순하고, react 친화적이다.
recoil을 통해 동기, 비동기 상태 관리를 진행보면서 장단점을 비교해볼 생각이다.