
SCSS는 뭐지?
왜 파일명 앞에 언더바를 붙일까?
_)가 있는 scss 팡리명은 빌드할 때 하나의 scss 파일로 묶여진다.@emotion/css 패키지 설치/** @jsxImportSource @emotion/react */를 작성: 바벨 트랜스파일러한테 jsx 코드를 변환할 때, 리액트의 jsx() 함수를 사용하지말고 emotion의 jsx()함수를 대신 사용하라고 알려주기 위함/** @jsxImportSource @emotion/react */
import { css } from "@emotion/react";
function MyComponent() {
return (
<div
css={css({
backgroundColor: "yellow",
})}>
노란색 영역
</div>);
}빌드타임과 런타임
- 빌드타임: 애플리케이션 코드를 프로덕션 환경에 적합한 형태로 준비하는 일련의 단계
- 정적으로 생성된 페이지를 위한 HTML 파일
- 서버에서 페이지를 렌더링 하기 위한 js 코드
- 클라이언트에서 페이지를 인터렉티브하게 만들기 위한 js 코드
- css 파일
- 런타임: 애플리케이션이 빌드되고 배포된 후 사용자의 요청에 응답하여 실행되는 기간
| CSS-in-CSS | CSS-in-JS | |
|---|---|---|
| 장점 | - 분리된 관심사 - 전역 관리 - 속도(별도의 CSS 파일을 사용하면 브라우저 캐싱 가능 → 성능 향상) | - 컴포넌트 기반 구조 - 동적 스타일링(js를 사용하여 스타일 생성) - 코드 재사용 및 모듈화 - 벤더 프리픽스 자동화 가능 |
| 단점 | - 동적 스타일링 제한(js를 사용하여 클래스를 조작하거나 인라인 스타일을 적용해야 함) - 코드의 재사용 어려움 | - 러닝커브 있음 - 웹 브라우저에서 CSS 파일을 캐시할 수 없기 때문에 ,초기 렌더링 속도가 느림 |
벤더 프리픽스란?
브라우저 호환성을 위해 필요한 접두사를 의미
transform 속성의 경우, Chrome, Safari, Firefox 등의 브라우저에서 각각 -webkit-transform, -moz-transform, -ms-transform 과 같은 접두사를 붙여야 하나 CSS-in-JS에서는 이를 자동으로 추가해줌
CSS-in-CSS와 CSS-in-JS에서 속도 차이가 나는 이유
- CSS-in-CSS는 웹 브라우저가 CSS 파일을 캐시하기 때문에 새로고침할 때마다 서버에서 CSS 파일을 가져오지 않고 캐시된 파일 사용
- 초기 로딩 속도에 민감할 경우 CSS-in-CSS 방법론이 적합
레퍼런스