>웹 프론트엔드 >JS 튜토리얼 >CSS-in-JS: React 애플리케이션을 위한 현대적인 스타일

CSS-in-JS: React 애플리케이션을 위한 현대적인 스타일

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-20 22:49:10774검색

CSS-in-JS: Modern Styling for React Applications

React의 CSS-in-JS

CSS-in-JS는 CSS 스타일을 JavaScript 파일 내에 작성하는 기술입니다. 이를 통해 개발자는 JavaScript 구문을 사용하여 CSS 규칙을 작성할 수 있으며 React 애플리케이션 스타일 지정에 대한 보다 동적이고 모듈화된 접근 방식을 제공합니다. 이 기술은 스타일이 전역 스타일시트가 아닌 개별 구성요소로 범위가 지정되는 구성요소 기반 아키텍처의 등장으로 인기를 얻었습니다.

React에서 CSS-in-JS를 사용하면 스타일이 속한 구성 요소와 밀접하게 연결되어 스타일을 쉽게 유지 관리하고 확장할 수 있습니다. Styled Components, Emotion, JSS

등 이 기술을 구현하는 여러 인기 라이브러리가 있습니다.

CSS-in-JS의 주요 이점

  1. 범위가 지정된 스타일

    : CSS-in-JS는 스타일의 범위를 개별 구성 요소로 지정하여 전역 CSS 충돌 가능성을 제거합니다. 이렇게 하면 스타일이 해당 구성 요소 내에서 격리되므로 애플리케이션을 더 쉽게 유지 관리할 수 있습니다.
  2. 동적 스타일링

    : CSS-in-JS를 사용하면 JavaScript 변수, 소품 및 상태를 사용하여 구성 요소 로직에 따라 스타일을 동적으로 쉽게 변경할 수 있습니다. 예를 들어 상태에 따라 버튼 색상을 변경할 수 있습니다.
  3. 구성 요소 기반 스타일링

    : 스타일은 구성 요소 논리와 함께 작성되므로 특히 대규모 애플리케이션에서 관리하기가 더 쉽습니다. 이를 통해 더욱 모듈화되고 유지 관리가 용이한 코드베이스가 가능해졌습니다.
  4. 자동 공급업체 접두사

    : Styled Components 및 Emotion과 같은 많은 CSS-in-JS 라이브러리는 자동으로 공급업체 접두사를 처리하여 브라우저 간 호환성을 보장합니다.
  5. 테마

    : CSS-in-JS를 사용하면 전역 테마를 더 쉽게 만들 수 있습니다. 최상위 수준에서 색 구성표, 타이포그래피 및 기타 공유 스타일을 정의하고 이를 구성 요소에 동적으로 삽입할 수 있습니다.

인기 CSS-in-JS 라이브러리

1. 스타일이 지정된 구성 요소

스타일 구성 요소

는 CSS-in-JS에서 가장 인기 있는 라이브러리 중 하나입니다. 이를 통해 JavaScript 파일 내에 실제 CSS 코드를 작성할 수 있지만 범위는 개별 구성 요소로 제한됩니다.
예: 스타일이 지정된 구성 요소 사용
npm install styled-components
import React from 'react';
import styled from 'styled-components';

// Create a styled component
const Button = styled.button`
  background-color: ${(props) => (props.primary ? 'blue' : 'gray')};
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  cursor: pointer;

  &:hover {
    opacity: 0.8;
  }
`;

const App = () => {
  return (
    <div>
      <Button primary>Primary Button</Button>
      <Button>Secondary Button</Button>
    </div>
  );
};

export default App;
설명:
  • styled.button은 버튼 구성 요소의 스타일을 정의할 수 있도록 Styled 구성 요소에서 제공하는 함수입니다.
  • 스타일의 범위는 버튼 구성요소로 지정됩니다. 즉, 페이지의 다른 버튼에는 영향을 주지 않습니다.
  • 기본 소품은 버튼의 배경색을 동적으로 변경하는 데 사용됩니다.

2. 감성

Emotion은 강력한 스타일링 솔루션을 제공하는 또 다른 인기 있는 CSS-in-JS 라이브러리입니다. 스타일 구성 요소와 유사하지만 성능 최적화 및 서버 측 렌더링에 대한 더 나은 지원과 같은 몇 가지 추가 기능이 있습니다.

예: 감정 활용
npm install @emotion/react @emotion/styled
/** @jsxImportSource @emotion/react */
import { css } from '@emotion/react';
import styled from '@emotion/styled';

const buttonStyle = (primary) => css`
  background-color: ${primary ? 'blue' : 'gray'};
  color: white;
  padding: 10px 20px;
  border: none;
  border-radius: 5px;
  cursor: pointer;

  &:hover {
    opacity: 0.8;
  }
`;

const Button = styled.button`
  ${props => buttonStyle(props.primary)}
`;

const App = () => {
  return (
    <div>
      <Button primary>Primary Button</Button>
      <Button>Secondary Button</Button>
    </div>
  );
};

export default App;
설명:
  • Emotion의 CSS 기능은 스타일 정의를 생성하는 데 사용되며, 스타일 정의는 스타일 API를 통해 구성 요소에 적용할 수 있습니다.
  • Emotion을 사용하면 템플릿 리터럴과 JavaScript 개체를 모두 사용하여 스타일을 작성할 수 있습니다.

3. JSS(자바스크립트 스타일 시트)

JSS는 JavaScript를 사용하여 CSS를 작성할 수 있도록 하는 또 다른 CSS-in-JS 라이브러리입니다. 사용자 정의 테마 및 고급 스타일 로직과 같은 기능을 통해 스타일을 보다 세밀하게 제어할 수 있습니다.

예: JSS 사용
npm install jss react-jss
import React from 'react';
import { createUseStyles } from 'react-jss';

const useStyles = createUseStyles({
  button: {
    backgroundColor: (props) => (props.primary ? 'blue' : 'gray'),
    color: 'white',
    padding: '10px 20px',
    border: 'none',
    borderRadius: '5px',
    cursor: 'pointer',
    '&:hover': {
      opacity: 0.8,
    },
  },
});

const Button = (props) => {
  const classes = useStyles(props);

  return <button className={classes.button}>{props.children}</button>;
};

const App = () => {
  return (
    <div>
      <Button primary>Primary Button</Button>
      <Button>Secondary Button</Button>
    </div>
  );
};

export default App;
설명:
  • createUseStyles는 스타일을 생성하는 React-jss에서 제공하는 후크입니다.
  • useStyles 후크는 props를 수신하고 버튼의 클래스 이름을 반환합니다.
  • 이 방법은 구성 요소에 전달된 소품을 기반으로 동적 스타일도 허용합니다.

CSS-in-JS의 과제

CSS-in-JS에는 많은 장점이 있지만 고유한 과제도 있습니다.

  1. 성능 오버헤드: CSS-in-JS 라이브러리는 특히 동적 스타일이 많은 대규모 애플리케이션의 경우 성능 오버헤드를 유발할 수 있습니다.
  2. 번들 크기 증가: 스타일은 JavaScript 코드와 함께 번들로 제공되므로 JavaScript 번들의 크기가 커질 수 있습니다.
  3. 학습 곡선: 기존 CSS 또는 전처리기 기반 워크플로(예: Sass)에 익숙한 개발자의 경우 CSS-in-JS로 전환하려면 학습 곡선이 필요할 수 있습니다.
  4. 관심사항의 분리: 일부 개발자는 동일한 파일에 스타일과 논리를 결합하는 것이 우려사항의 분리 원칙을 위반한다고 생각합니다.

CSS-in-JS 모범 사례

  1. 테마 사용: CSS-in-JS 라이브러리에서 제공하는 테마 기능을 활용하여 앱의 전역 스타일(예: 색상, 글꼴)을 관리하세요.
  2. 스타일 범위 유지: 스타일 구성 요소 또는 JSS를 사용하여 스타일 범위를 자신이 속한 구성 요소로 유지하여 전역 스타일이 서로 간섭하는 것을 방지합니다.
  3. 동적 스타일 제한: 과도한 동적 스타일은 성능에 부정적인 영향을 미칠 수 있으므로 동적 스타일은 자제해서 사용하세요.
  4. 적절한 도구 사용: Babel과 같은 도구는 생성된 CSS를 최소화하는 등 CSS-in-JS 라이브러리의 성능을 최적화하는 데 도움이 될 수 있습니다.

결론

CSS-in-JS는 JavaScript와 CSS의 강력한 기능을 결합하여 React 애플리케이션 스타일을 지정하는 현대적인 접근 방식입니다. 스타일 구성 요소, Emotion 또는 JSS와 같은 라이브러리를 사용하면 JavaScript 파일 내에 스타일을 작성하여 코드베이스의 모듈성, 성능 및 유지 관리성을 향상시킬 수 있습니다. 그러나 특히 대규모 애플리케이션에서는 CSS-in-JS 사용과 잠재적인 성능 고려 사항의 균형을 맞추는 것이 중요합니다.


위 내용은 CSS-in-JS: React 애플리케이션을 위한 현대적인 스타일의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.