React

[React] ์ปดํฌ๋„ŒํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ Component Driven Development (CDD)

mellomello.made 2022. 6. 30. 21:31

๐Ÿ“Œ  Component Driven Development (CDD)

: ๋ถ€ํ’ˆ ๋‹จ์œ„๋กœ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๋Š” ๊ฐœ๋ฐœ

CDD ๋ฐฉ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ UI ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ์‚ฌ์ดํŠธ

1) UN
2)  BBC 
 

Storybook

 

latest--5d28eb5ee163f6002046d6fb.chromatic.com

 


๐Ÿ“Œ  CSS ์ „์ฒ˜๋ฆฌ๊ธฐ(CSS Preprocessor)

: CSS๊ฐ€ ๊ตฌ์กฐ์ ์œผ๋กœ ์ž‘์„ฑ๋  ์ˆ˜ ์žˆ๊ฒŒ ๋„์›€์„ ์ฃผ๋Š” ๋„๊ตฌ

 

SASS (Syntactically Awesome Style Sheet)

  • CSS๋ฅผ ํ™•์žฅํ•ด ์ฃผ๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฒ˜๋Ÿผ ํŠน์ • ์†์„ฑ(ex. color, margin, width ๋“ฑ)์˜ ๊ฐ’(ex. #ffffff, 25rem, 100px ๋“ฑ)์„ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜์—ฌ ํ•„์š”ํ•œ ๊ณณ์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋ฅผ ์ ์šฉ
  • ๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์˜ ์„ ์–ธ์œผ๋กœ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด ์ฃผ๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ
  • SASS๋Š” SCSS ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ ์ „์ฒ˜๋ฆฌํ•œ ๋‹ค์Œ ์ปดํŒŒ์ผํ•ด์„œ ์ „์—ญ CSS ๋ฒˆ๋“ค ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ(preprocessor)์˜ ์—ญํ• ์„ํ•œ๋‹ค.

 

๐Ÿ“Œ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด๋‚˜์˜จ ๋ฐฉ๋ฒ•๋ก .

: BEM, OOCSS, SMACSS ๊ฐ™์€ CSS ๋ฐฉ๋ฒ•๋ก ์ด ๋Œ€๋‘๋จ.

๋ฐฉ๋ฒ•๋ก ์˜ ๊ณตํ†ต ์ง€ํ–ฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ
  • ์ฝ”๋“œ์˜ ๊ฐ„๊ฒฐํ™”(์œ ์ง€ ๋ณด์ˆ˜ ์šฉ์ด)
  • ์ฝ”๋“œ์˜ ํ™•์žฅ์„ฑ
  • ์ฝ”๋“œ์˜ ์˜ˆ์ธก์„ฑ(ํด๋ž˜์Šค ๋ช…์œผ๋กœ ์˜๋ฏธ ์˜ˆ์ธก)

 

  ํŠน์ง• ์žฅ์  ๋‹จ์ 
CSS ๊ธฐ๋ณธ์ ์ธ ์Šคํƒ€์ผ๋ง ๋ฐฉ๋ฒ•. - ์ผ๊ด€๋œ ํŒจํ„ด์„ ๊ฐ–๊ธฐ ์–ด๋ ต๋‹ค.
!important์˜ ๋‚จ์šฉ.
SASS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ๋ฒ•๋ก ์„ ๋„์ž…ํ•˜์—ฌ
์ปดํŒŒ์ผ๋œ CSS๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ.
๋ณ€์ˆ˜/ํ•จ์ˆ˜/์ƒ์† ๊ฐœ๋…์„ ํ™œ์šฉํ•˜์—ฌ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
CSS ๊ตฌ์กฐํ™”.
์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
๋””๋ฒ„๊น…์˜ ์–ด๋ ค์›€์ด์žˆ๋‹ค.
์ปดํŒŒ์ผํ•œ CSS ํŒŒ์ผ์ด ๊ฑฐ๋Œ€ํ•ด์ง„๋‹ค.
BEM CSS ํด๋ž˜์Šค๋ช… ์ž‘์„ฑ์— ์ผ๊ด€๋œ ํŒจํ„ด์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก . ๋„ค์ด๋ฐ์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐํ•จ.
์ „์ฒ˜๋ฆฌ ๊ณผ์ •์ด ๋ถˆํ•„์š”ํ•˜๋‹ค.
์„ ํƒ์ž์˜ ์ด๋ฆ„์ด ์žฅํ™ฉํ•˜๋‹ค.
ํด๋ž˜์Šค ๋ชฉ๋ก์ด ๋งŽ์•„์ง„๋‹ค.

Styled-Component
(CSS-in-JS)
์ปดํฌ๋„ŒํŠธ ๊ธฐ์œผ๋กœ CSS๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. CSS๋ฅผ ์ปดํฌ๋„ŒํŠธ ์•ˆ์œผ๋กœ ์บก์Аํ™”ํ•œ๋‹ค. ๋„ค์ด๋ฐ์ด๋‚˜ ์ตœ์ ํ™” ์‹ ๊ฒฝ์“ธ ํ•„์š” ์—†๋‹ค. ๋น ๋ฅธ ํŽ˜์ด์ง€ ๋กœ๋“œ์— ๋ถˆ๋ฆฌํ•˜๋‹ค.

 


๐Ÿ“Œ  CSS-in-JS ์˜ ํƒ„์ƒ

 

Styled-Component

๊ธฐ๋Šฅ์ (Functional) ํ˜น์€ ์ƒํƒœ๋ฅผ ๊ฐ€์ง„ ์ปดํฌ๋„ŒํŠธ๋“ค๋กœ๋ถ€ํ„ฐ UI๋ฅผ ์™„์ „ํžˆ ๋ถ„๋ฆฌํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ฃผ ๋‹จ์ˆœํ•œ ํŒจํ„ด์„ ์ œ๊ณตํ•œ๋‹ค.