Skip to content

프론트엔드‐스타일링 상태관리 방법 선택 및 이유

최진실 edited this page Jul 11, 2024 · 9 revisions

🎨 스타일링

Pure css

sass, scss, css module 등을 이용하여 개발한다면 빌드 결과물이 css로 나옵니다. 이는 css-in-js 라이브러리를 사용했을 때보다 런타임 오버헤드가 적지만 상태에 따른 동적 스타일링이 어렵다는 단점이 있습니다.

css-in-js

styled-component, emotion 과 같은 css-in-js 라이브러리를 사용하여 빌드할 시 스타일 관련 코드가 css 파일이 아닌 자바스크립트 코드로 생성됩니다. 이는 자바스크립트 코드로 실행되기에 런타임 오버헤드가 있기도 하고 해당 js 파일이 html element 에 적용되는 방법에 대한 로직이 들어있는 번들링을 추가로 로드해야하기에 사용자가 로드해야할 파일 크기가 증가한다는 단점이 있습니다.

css-in-js 선택한 이유

우선 프로젝트 규모가 크지 않고 기획상 복잡한 스타일이 추가되지 않기에 오버헤드가 적을 것으로 추측하였고, 이러한 오버헤드가 사용자에게 미치는 영향의 부정적인 측면보다 동적 스타일링 및 코드의 가독성으로 인한 DX(Developer eXperience) 향상의 이점이 더욱 많다고 판단하여 css-in-js 를 사용하게 되었습니다.

styled-component vs emotion

우선 팀원이 styled-component 라이브러리 사용에 더욱 익숙하여 emotion 이 아닌 styled-component 사용을 선택했습니다. 그 외에도 emotion 의 높은 자유도의 스타일링 방식으로 인해 emotion 컨벤션 통일에 대한 추가 논의가 필요하기에 스타일 방식이 고정된 styled-component 방식을 채택했습니다.


💻 상태관리

클라이언트 상태 관리

추후 필요 시 도입 예정

서버 상태 관리

React Query

React Query를 이용하여 불필요한 서버 데이터 요청을 최소화할 수 있습니다. 만약 특정 시간 동안 서버의 데이터가 변하지 않거나 변경된 데이터를 가져올 필요가 없는 경우 서버로 데이터 요청을 하지 않고, 이전에 받았던 데이터를 활용하여 UI 구성을 할 수 있습니다. 그로 인해 사용자는 서버의 데이터 응답을 기다려야 하는 수고를 덜 수 있고 사용자 경험(UX)을 향상할 수 있습니다.

그 외에도 이전에 요청했던 데이터를 다시 요청하는 경우 React Query를 이용하여 서버의 응답이 올 때까지 로딩 화면을 보여주는 방식이 아닌 이전 데이터를 사용자에게 보여주다가 만약 새로운 데이터를 응답받으면 그 새로운 데이터를 기반으로 리렌더링하여 UI를 보여주어 UX 향상을 기대할 수 있습니다.

Clone this wiki locally