CSS in JS 라이브러리 "emotion"의 권장 사항
CSS Module에서 CSS in JS로
저는 원래 CSS Modules(SASS)를 사용했는데 애니메이션 라이브러리와의 호환성이 좋지 않아서 (나중에 해결) Atomic Design을 도입한 후에 파일 구조를 어떻게 해야 할지 막막해서 CSS in JS로 갈아타는 것을 고려하는 절차가 되었습니다.
가장 골치 아픈 것은 파일 구조입니다. 저는 개인적으로 아토믹스에 해당하는 최소 구성 요소라도 css/sass 파일을 만들어야 한다고 생각합니다. 이것은 저를 매우 혐오스럽게 하고 작은 위젯의 분리에 저촉됩니다.
선택한 CSS in JS 라이브러리
주요 토론 항목으로 삼다
토론의 주요는 다음과 같은 세 가지가 있다.
styled-jsx 2 때문에 해결 못 할 것 같아요.×
이에 따라 emotion을 사용하기로 했습니다.
emotion의 이점
코드는 Next입니다.js의 예를 사용합니다.
사용이 편리하다
@emotion/react
에서 css 속성으로 가져온 css를 되돌려주면 됩니다. 따라서 '순수' 탭 이름으로 스타일을 적용할 수 있습니다.import { css } from '@emotion/react'
export const Hoge: React.FC = () => (
<div css={hoge}>
<p>hoge</p>
</div>
)
const hoge = css`
margin: 100px auto 0;
`
도 함수를 함수화하여 스타일을 유연하게 덮어쓸 수 있다.(이것이 좋은지 나쁜지는 말하지 않겠다)마찬가지로, 미디어 조회와 같은 전역에 믹스의 함수를 놓을 수도 있다.
import { css, SerializedStyles } from '@emotion/react'
type Props = {
text: string
_css?: SerializedStyles
}
const H1: React.FC<Props> = ({ text, _css }) => (
<h1 css={title(_css)}>{text}</h1>
)
const title = (_css: SerializedStyles): SerializedStyles => css`
position: relative;
font-size: 50px;
line-height: 1;
${_css}
`
성능
스타일드-components보다 약간 emotion의 성능이 좋습니다.
참조:
향후 유지 보수(경향)
현재 스타일드-components는 emotion보다 더 인기가 많은 것 같습니다.
참조: Sass에서 CSS Modules까지 가다가 스타일드-components로 갈아타는 이야기
운용이 수반되는 큰 프로젝트에 활용하면 향후 외면성이 큰 영향을 미치겠지만, 자신이 광고 제작사에서 일할 때도 운용 등이 일어나기 때문에 그렇게 중요하게 생각하지 않는다.
Reference
이 문제에 관하여(CSS in JS 라이브러리 "emotion"의 권장 사항), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/itomise/articles/e6386441cac697텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)