프론트엔드에서 Component Style 관리에 있어 많은 유행과 방식이 있지만, 정의하는 위치와 방식에 따라 구분된다.
inCSS vs CSSinJS
Css안에서 스타일을 정의하는 것을 말합니다.
전통적인 CSS를 말한다.
가독성과 중복되는 CSS의 작성 방식을 해결하기 위해 다양한 전처기를 사용한다. > 이후에 따로 다뤄볼게용 :)
Javascript안에서 스타일을 정의하는 것을 말합니다.
<조건>
1. 컴포넌트의 값은 색 이름 이며, 배경 색으로 지정한다.
2. 컴포넌트의 값은 변경이 가능하다.
//css
.greenComponents {
background-color: "green"
}
.redComponents{
background-color: "red"
}
//js
let value = "red"
return {
<div className={value === "green"? greenComponents : redComponents}>...
}
간단하게는 이와 같이 구현이 가능하다.
하지만, 만일 조건이 추가되면??
<추가 조건>
1. 색의 종류가 늘어난다.
inCSS 문제는 확장성과 재사용이 힘들다는 부분에서 생긴다.
//css
.greenComponents{...
.blueComponents{...
.redComponents{...
//js
<div className={value === "green"? greenComponents : value === "red"? redComponents : ...?}>
inCss와 동일한 조건으로 CSS in JS로 코드를 작성하면 어떻게 될 것 인가?
//js
import React from "react";
import styled from "styled-components";
const color = "red"
const colorComponents = styled.div`
background: ${color};
`;
function ColorComponent({ children }) {
return <colorComponent>{children}</colorComponent>;
}
inCss에서는 색이 추가될때마다 CSS를 추가하고 경우의 수 를 작성 했다면, CSS in Js 에서는 컬러를 변수로 받아서 바로 사용이 가능한 모습을 보여준다. 가독성 뿐만 아니라 확장성과 재사용성에도 용이한 모습을 보인다.