-
Notifications
You must be signed in to change notification settings - Fork 7
프론트엔드 기술 스택
최영수(suya) edited this page Jul 24, 2024
·
1 revision
-
팀원의 익숙함
프론트엔드 팀원 3명 중 2명이 레벨2에서 emotion을 사용한 경험이 있었어요. 나머지 1명도 레벨2에서 styled-component의 경험은 있었고 emotion을 경험해보고 싶어 했어요. 이를 통해 팀 차원에서 프로젝트 초기 단계부터 빠르게 적응할 수 있을 것이라 판단했습니다.
-
풍부한 정보
emotion은 스타일링 도구 중 점유율이 높아요. 이로 인해 정보를 얻고 학습하기 용이할 것이라 판단했습니다.
-
동적 스타일링
JS 문법을 활용해 자유롭게 스타일링을 적용할 수 있어 동적 스타일링이 편리해요. 이를 통해 동적 스타일링 분기 처리를 스타일링 단으로 분리할 수 있어 컴포넌트의 가독성이 향상될 것이라 판단했습니다.
import { css } from '@emotion/react'; export const containerStyle = (isDarkMode) => css` background-color: ${isDarkMode ? '#333' : '#f0f0f0'}; color: ${isDarkMode ? '#fff' : '#333'}; `; --- import React from 'react'; import { containerStyle } from './styles'; function Component({ isDarkMode }) { return <div css={containerStyle(isDarkMode)}>Hello, Emotion!</div>; } export default Component;
.container { background-color: #f0f0f0; } .containerDark { background-color: #333; } --- import React from 'react'; import styles from './styles.module.css'; function Component({ isDarkMode }) { return ( <div className={isDarkMode ? styles.containerDark : styles.container}> Hello, CSS Modules! </div> ); } export default Component;
$background-color-light: #f0f0f0; $background-color-dark: #333; $text-color-light: #333; $text-color-dark: #fff; .container { background-color: $background-color-light; color: $text-color-light; } .container-dark { background-color: $background-color-dark; color: $text-color-dark; } --- import React from 'react'; import './styles.scss'; function Component({ isDarkMode }) { const className = isDarkMode ? 'container-dark' : 'container'; return <div className={className}>Hello, SASS!</div>; } export default Component;
-
유연한 스타일링
emotion의 css prop 방식의 스타일링을 통해 여러 스타일을 유연하게 결합할 수 있어요. 이러한 특징을 활용해 스타일링 코드를 더 직관적이고 유연하게 만들 수 있을 것이라 판단했습니다.
import { css } from '@emotion/react'; const baseStyle = css` padding: 10px; border-radius: 5px; `; const styles = { primary: css` background-color: blue; color: white; `, secondary: css` background-color: gray; color: black; ` }; export default function Button({ theme }) { return ( <button css={[baseStyle, styles[theme]]}> Click me </button> ); }
비동기 서버 상태 페칭, 캐싱, 업데이트 작업을 쉽게 관리하기 위해 서버 상태 관리 도구를 사용하기로 결정했습니다.
팀원 모두 레벨2 과정에서 react-query를 경험해보았어요. swr과 react-query 두 가지 선택지가 있었지만, 기본적으로 두 가지 도구 모두 기능이 유사하기 때문에 이미 경험해본 react-query를 사용하는 것이 프로젝트에 빠르게 적용하는 데 도움이 될 것이라 판단했습니다.