나는 주로 업무를 할 때 styled-component와 emotion을 사용해 컴포넌트들을 관리해왔다.
props를 넘겨줄 수 있어서 동적인 스타일을 적용하기 편리하고, 러닝커브가 낮아서 쉽게 접할 수 있었기 때문이다.
그러나 최근들어 tailwind css를 쓰는 기업들이 많아지면서, 과연 어떤 부분이 css in js 보다 더 좋은지, 혹은 단점은 없는지 알고싶어졌다. ~,~
tailwind 사용방법은 공식 문서를 참고하자
https://tailwindcss.com/docs/installation
아래에 내가 알게된 둘의 장단점과 차이에 대해 정리해보겠다.
- CSS in JS
- javascript 파일 내에서 스타일을 정의해서 사용한다. 대표적으로 Styled-component, Emotion이 있다.
- styled의 경우 const MyComponent = styled.div`...`; 태그를 변수 형태로 정의해서 사용한다.
- emotion의 경우 const MyStyle = css``; => <div css={MyStyle}/> css를 변수로 정의해서 css라는 속성으로 넣어준다.
- props,state에 따라 간단하게 동적인 스타일을 적용할 수 있다.
- 러닝커브가 낮아서 쉽게 사용할 수 있다.
- 랜더링 시 javascript 파일 안에 style 태그로 들어간다.
- js 코드가 업데이트될때마다 함깨 렌더링 되기 때문에 랜더링 속도가 더 오래걸릴 수 있다. (일부 스타일은 브라우저에서 캐싱되기도 함)
- Tailwind CSS
- 랜더링 시 단일 css파일로 동작해 js 코드의 리랜더링 등에 영항을 받지 않는다. html에서 직접 css를 참조.
- 정적 css파일로 동작하기때문에 동적인 스타일을 적용하기위해서는 여러 클래스를 조건에따라 관리해야하는 불편함이 있다. (불가능한것은 아님! classnames 로 조건에 따른 복수의 클래스네임을 관리할 수 있다.)
- 클래스기반의 캐싱을 사용 class name 안에 <a href="#" class="text-blue-500">+ 198 others</a> 기본적으로 제공하는 스타일을 넣거나,
- 이렇게 커스텀 스타일을 정의해서 사용하는 것도 가능하다.
module.exports = {
theme: {
colors: {
'blue': '#1fb6ff',
'pink': '#ff49db',
'orange': '#ff7849',
},
}
}
------------------------------------------------
<div class="bg-blue text-orange p-4">
custom text
</div>
우선 기본적으로 tailwind에서 제공하는 유틸리티 클래스 구조와 rem 단위에 익숙해질 필요가 있겠군...
e.g ) className-"p-4" 는 위아래좌우에 1rem(보통 16px)의 패딩을 넣는다는 뜻,
className="py-2.5 px-3"은 위아래 10px, 좌우 12px의 패딩을 넣는다는 뜻.
(1: 0.25rem == 4px)
'react js' 카테고리의 다른 글
Typescript의 정적 타입 검사란? (0) | 2024.11.12 |
---|---|
TypeScript의 타입 추론에 대해 알아보자 (0) | 2024.11.11 |
React 개발자들이 커스텀 훅Custom Hook 을 사용해야 하는 이유 (0) | 2024.10.11 |
interface와 type 알고 사용하자 (차이, 장단점) (0) | 2024.10.02 |
Next.js : 요즘 회사들의 프레임워크 (SSG,SSR,ISR) (2) | 2024.09.24 |