[CSS] CSS-in-JS 장단점

해피몬·2023년 4월 30일
0
post-thumbnail

CSS-in-JS는 JavaScript 코드 내에서 CSS를 작성하고 관리할 수 있는 방식입니다. React 같은 컴포넌트 기반 라이브러리와 함께 사용되는 경우가 많으며, 대표적인 라이브러리로는 Styled Components, Emotion, JSS 등이 있습니다.

장점

컴포넌트 기반 스타일링

CSS를 JavaScript 파일 내에서 작성할 수 있어, 스타일이 컴포넌트와 함께 캡슐화됩니다. 이를 통해 특정 컴포넌트에만 적용되는 스타일을 쉽게 관리할 수 있습니다.

동적 스타일링

JavaScript 변수와 로직을 사용해 동적으로 스타일을 변경할 수 있습니다. 예를 들어, 컴포넌트의 상태나 props에 따라 스타일을 조건부로 변경할 수 있습니다.

스타일의 충돌 방지

CSS-in-JS는 자동으로 고유한 클래스명을 생성하여 스타일 충돌을 방지합니다. 이를 통해 전역 네임스페이스 오염을 걱정하지 않아도 됩니다.

코드 분할과 성능 최적화

CSS-in-JS 라이브러리들은 코드 분할을 통해 필요한 스타일만 로드할 수 있도록 지원하여, 페이지의 초기 로딩 시간을 단축할 수 있습니다.

유지보수성 향상

스타일과 로직이 한 파일에 있기 때문에, 컴포넌트를 수정할 때 스타일을 쉽게 찾고 수정할 수 있습니다. 이는 특히 대규모 프로젝트에서 유지보수성을 높이는 데 도움이 됩니다.

주문형 스타일 시트(On-demand Stylesheet)

필요한 컴포넌트가 로드될 때만 해당 스타일이 로드되므로, 불필요한 스타일의 로딩을 줄일 수 있습니다.

단점

런타임 성능 문제

스타일이 컴포넌트가 렌더링될 때마다 생성되기 때문에, 특히 많은 수의 컴포넌트가 있는 경우 런타임 성능에 영향을 줄 수 있습니다.

빌드 크기 증가

CSS가 JavaScript 코드에 포함되기 때문에, 번들 크기가 커질 수 있습니다. 이로 인해 초기 로딩 시간이 증가할 수 있습니다.

도구 및 라이브러리 의존성

CSS-in-JS는 특정 라이브러리에 의존하므로, 해당 라이브러리가 더 이상 유지보수되지 않거나 업데이트가 중단될 경우 문제가 발생할 수 있습니다.

CSS 기능 제한

CSS-in-JS 라이브러리마다 지원하는 CSS 기능에 차이가 있을 수 있습니다. 예를 들어, 미디어 쿼리나 애니메이션 등을 다루는 데 제약이 있을 수 있습니다.

학습 곡선

기존 CSS와 다르게 JavaScript로 스타일을 작성해야 하므로, 이를 처음 접하는 개발자에게는 학습이 필요합니다.

SSR(Server-Side Rendering) 문제

서버 사이드 렌더링 환경에서 스타일을 처리할 때 추가적인 설정이나 작업이 필요할 수 있습니다.

profile
슬기로운개발생활🤖

0개의 댓글