[🏠 아킀텍쳐 ] CDD - Styled Component

dsfasdΒ·2022λ…„ 10μ›” 27일
0

CDD ( Component Driven Development , μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„ 개발둠 )

CDDλŠ” Component Driven Developmentλ₯Ό μ˜λ―Έν•œλ‹€.
즉, μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„μ˜ κ°œλ°œμ΄λΌλŠ” μ˜λ―Έμ΄λ‹€.

μ»΄ν¬λ„ŒνŠΈ ν•˜λ‚˜λŠ” μž‘μ€ κΈ°λŠ₯을 κ΅¬ν˜„ν•œ λ‹¨μœ„μ— ν•΄λ‹Ήλ˜λŠ”λ°,
이 μ»΄ν¬λ„ŒνŠΈλ“€μ„ μ‘°λ¦½ν•΄μ„œ ν•˜λ‚˜μ˜ 결과물을 λ„μΆœν•˜λŠ” 것이닀.
μž‘μ€ λ‹¨μœ„μ—μ„œ 점차 ν™•μž₯ν•œλ‹€λŠ” μ μ—μ„œ 상ν–₯식 κ°œλ°œλ°©λ²•μ— ν•΄λ‹Ήν•œλ‹€.


CDD의 ν•„μš”μ„±

큰 규λͺ¨μ˜ ν”„λ‘œμ νŠΈλ“€μ΄ 증가함에 λ”°λΌμ„œ CDD 개발의 ν•„μš”μ„±μ΄ 점차 μ¦κ°€ν•˜μ˜€λ‹€. λ¦¬μ•‘νŠΈμ˜ λ“±μž₯으둜 μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„μ˜ 개발 μžμ²΄λŠ” μ›ν™œν•˜κ²Œ μ§„ν–‰λ˜λŠ”λ° λ°˜ν•΄, CSSμ—μ„œλŠ” λ§ˆλ•…ν•œ μ»΄ν¬λ„ŒνŠΈ λ‹¨μœ„λ‘œμ˜ 개발 방법이 μ‘΄μž¬ν•˜μ§€ μ•Šμ•˜λ‹€.


CSS μ „μ²˜λ¦¬κΈ°μ˜ ν•œκ³„

SASS λ“± CSS의 μ „μ²˜λ¦¬κΈ°μ˜ λ“±μž₯으둜, CSSλ₯Ό κ΅¬μ‘°ν™”ν•˜μ—¬ μž‘μ„±ν•˜λŠ” 것이 μ‰¬μ›Œμ§€κ²Œ λ˜μ—ˆλ‹€. ν•˜μ§€λ§Œ μ΄λŠ” μˆ˜λ§Žμ€ νŒŒμΌμ„ κ³„μΈ΅μ μœΌλ‘œ λ§Œλ“€μ–΄ λ‚΄λŠ” λ°©μ‹μœΌλ‘œ, μ–΄λ§ˆμ–΄λ§ˆν•œ μš©λŸ‰μ„ 가진 νŒŒμΌμ„ μƒμ„±ν•˜μ˜€λ‹€.


CDD λ°©λ²•λ‘ μ˜ λŒ€λ‘

μ΄λŸ¬ν•œ CSS μ „μ²˜λ¦¬κΈ°μ˜ 문제λ₯Ό λ³΄μ™„ν•˜κΈ° μœ„ν•΄ BEM, OOCSS, SMACSS 같은 CSS 방법둠이 λŒ€λ‘λ˜μ—ˆλ‹€.

μ•„λž˜λŠ” BEM의 μ˜ˆμ‹œμ΄λ‹€.
λΈ”λŸ­μš”μ†Œ - 쑰각 - 속성 에 λ”°λΌμ„œ μ„ νƒμž μž‘λͺ…을 ν•˜λŠ” 방법이닀.
μ΄λŸ¬ν•œ κΈ΄ 클래슀λͺ…은 μ»΄ν¬λ„ŒνŠΈ μž¬μ‚¬μš©μ‹œ λ”°λ‘œ μ»΄ν¬λ„ŒνŠΈλ₯Ό ν™•μž₯을 ν•΄μ•Όν•˜λŠ” λΆˆνŽΈν•¨μ΄ μžˆμ—ˆκ³ , λ§ˆν¬μ—…μ΄ λΆˆν•„μš”ν•˜κ²Œ μ»€μ§„λ‹€λŠ” 단점이 μžˆμ—ˆλ‹€.

각각의 μž₯단점이 μžˆμœΌλ‚˜ κ²°κ΅­ μ„Έ 방법둠 λͺ¨λ‘ 같은 지ν–₯점을 가지고 μžˆλŠ”λ° λ°©λ²•λ‘ μ˜ 곡톡 지ν–₯점은 λ‹€μŒκ³Ό κ°™λ‹€.

  • μ½”λ“œμ˜ μž¬μ‚¬μš©
  • μ½”λ“œμ˜ κ°„κ²°ν™”(μœ μ§€ 보수 용이)
  • μ½”λ“œμ˜ ν™•μž₯μ„±
  • μ½”λ“œμ˜ μ˜ˆμΈ‘μ„±(클래슀 λͺ…μœΌλ‘œ 의미 예츑)

ν•˜μ§€λ§Œ CDD λ°©λ²•λ‘ μ˜ 단점은 μΊ‘μŠν™”κ°€ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” κ²ƒμ΄μ—ˆλ‹€.
μΊ‘μŠν™”λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μœΌλ‘œ 개발 방법이 진화함에 λ”°λΌμ„œ 점차 λ”λ”μš± μ€‘μš”ν•˜κ²Œ λ˜μ—ˆλ‹€.



Styled Component (in JS)

CSS λ°©λ²•λ‘ μ˜ 문제점인 μΊ‘μŠν™”λ₯Ό ν•΄κ²°ν•΄μ£ΌλŠ” Styled Component in JSκ°€ λ“±μž₯ν•˜κ²Œ λ˜μ—ˆλ‹€.
Styled ComponentλŠ” 라이브러리둜 λ¦¬μ•‘νŠΈμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•˜λ©°, CSSλ₯Ό μ»΄ν¬λ„ŒνŠΈν™” μ‹œμΌœμ£ΌλŠ” 도ꡬ이닀.

CSS λ˜ν•œ JS 파일 λ‚΄μ—μ„œ μž‘μ„± κ°€λŠ₯ν•˜λ―€λ‘œ, JS 파일과 ν•¨κ»˜ μ»΄ν¬λ„ŒνŠΈ 개발이 κ°€λŠ₯ν•˜λ‹€.


  1. Styled Component μ„€μΉ˜
$ npm install --save styled-components

  1. νŒŒμΌμ— import
import styled from "styled-components"

  1. μ»΄ν¬λ„ŒνŠΈ 생성
    νŠΉμ΄ν•œ 점은 νƒœκ·Έλͺ… 뒀에 `(λ°±ν‹±)으둜 λ¬Άμ–΄μ€€λ‹€λŠ” 점이닀.
    μ»΄ν¬λ„ŒνŠΈμ²˜λŸΌ μ‚¬μš©ν•˜λ―€λ‘œ μ»΄ν¬λ„ŒνŠΈ 이름도 κΌ­ λŒ€λ¬Έμžλ‘œ λ§žμΆ°μ€˜μ•Ό ν•œλ‹€.
const μ»΄ν¬λ„ŒνŠΈ 이름 = styled.νƒœκ·Έλͺ…`
	CSS속성 : CSS속성 κ°’; 
`;
const redButton = styled.button`
	color : red,
    backgroundColor : white;
`;

  1. μ»΄ν¬λ„ŒνŠΈμ˜ μž¬ν™œμš©λ„ κ°€λŠ₯ν•˜λ‹€.
const μƒˆλ‘œμš΄ μ»΄ν¬λ„ŒνŠΈλͺ… = styled.(μž¬ν™œμš©ν•  μ»΄ν¬λ„ŒνŠΈλͺ…)`
	μΆ”κ°€ν•  CSS속성 : μΆ”κ°€ν•  CSS속성 κ°’; 
`;
const bigRedButton = styled.(redButton)`
	width : 100px;
`;

  1. μ „μ—­ μŠ€νƒ€μΌ μ„€μ •
    createGlobalStyle을 μž„ν¬νŠΈ ν›„, <GlobalStyle />을 μ΅œμƒλ‹¨ μ»΄ν¬λ„ŒνŠΈμ— μ‚¬μš©ν•œλ‹€.
import { createGlobalStyle } from "styled-components";
const GlobalStyle = createGlobalStyle`
	button {
		padding : 5px;
    margin : 2px;
    border-radius : 5px;
	}
`
function App() {
	return (
		<>
			<GlobalStyle />
			<Button>μ „μ—­ μŠ€νƒ€μΌ μ μš©ν•˜κΈ°</Button>
		</>
	);
}
profile
기둝을 μ •λ¦¬ν•˜λŠ” 곡간!

0개의 λŒ“κΈ€