๐ŸŽจ 3. Tailwind CSS vs Styled-components, ์Šคํƒ€์ผ๋ง ๋ฐฉ์‹ ๊ณ ๋ฏผ ์ •๋ฆฌ

JM_Devยท2025๋…„ 4์›” 17์ผ
1
post-thumbnail

์š”์ฆ˜ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์Šคํƒ€์ผ๋ง์„ ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ• ์ง€ ๋งŽ์ด ๊ณ ๋ฏผํ–ˆ์—ˆ๋‹ค.
ํŠนํžˆ Tailwind CSS๋ž‘ styled-components ์ค‘ ๋ญ˜ ์“ฐ๋Š” ๊ฒŒ ์ข‹์„๊นŒ ์ƒ๊ฐ์ด ๋งŽ์•˜๊ณ ,
๋‘ ๊ฐ€์ง€ ๋‹ค ์จ๋ณด๋ฉด์„œ ๋А๋‚€ ์ ์„ ์ •๋ฆฌํ•ด๋ดค๋‹ค.


โœ… Tailwind CSS?

ํด๋ž˜์Šค ๋‹จ์œ„๋กœ ์œ ํ‹ธ๋ฆฌํ‹ฐ ์Šคํƒ€์ผ์„ ์กฐํ•ฉํ•ด์„œ ์“ฐ๋Š” ๋ฐฉ์‹

<button class="bg-blue-500 text-white px-4 py-2 rounded">
  ๋ฒ„ํŠผ
</button>

์žฅ์ 

  • ๋น ๋ฅด๋‹ค! ๊ทธ๋ƒฅ ํด๋ž˜์Šค ๋ถ™์ด๋ฉด ๋
  • ๋”ฐ๋กœ ์Šคํƒ€์ผ ํŒŒ์ผ ์•ˆ ๋งŒ๋“ค์–ด๋„ ๋จ
  • ๋””์ž์ธ ์‹œ์Šคํ…œ ๋งŒ๋“ค๊ธฐ ํŽธํ•จ (ํŠนํžˆ ๋‹คํฌ๋ชจ๋“œ, ๋ฐ˜์‘ํ˜• ๋“ฑ)

๋‹จ์ 

  • ํด๋ž˜์Šค๊ฐ€ ๊ธธ์–ด์ง
  • ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์Œ
  • ์Šคํƒ€์ผ ์žฌ์‚ฌ์šฉ์€ ์‚ด์ง ๋ถˆํŽธํ•จ

โœ… styled-components?

CSS-in-JS ๋ฐฉ์‹์œผ๋กœ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ์Šคํƒ€์ผ์„ ์ž‘์„ฑ

import styled from 'styled-components';

const Button = styled.button`
  background-color: blue;
  color: white;
  padding: 0.5rem 1rem;
  border-radius: 8px;
`;

<Button>๋ฒ„ํŠผ</Button>

์žฅ์ 

  • ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•จ
  • JS ๋ณ€์ˆ˜/props๋กœ ๋™์ ์œผ๋กœ ์Šคํƒ€์ผ ์ง€์ • ๊ฐ€๋Šฅ
  • ๊ธ€๋กœ๋ฒŒ ์Šคํƒ€์ผ, ํ…Œ๋งˆ ์„ค์ • ๋“ฑ๋„ ํŽธ๋ฆฌํ•จ

๋‹จ์ 

  • ๋Ÿฌ๋‹์ปค๋ธŒ๊ฐ€ ์กฐ๊ธˆ ์žˆ์Œ
  • ๋Ÿฐํƒ€์ž„ ์Šคํƒ€์ผ์ด๋ผ ํผํฌ๋จผ์Šค ์ด์Šˆ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
  • ๋นŒ๋“œ ์‚ฌ์ด์ฆˆ๊ฐ€ Tailwind๋ณด๋‹ค ์ปค์งˆ ์ˆ˜ ์žˆ์Œ

โœ… ๊ฐœ์ธ์ ์ธ ์„ ํƒ ๊ธฐ์ค€

๊ธฐ์ค€Tailwind CSSstyled-components
๋น ๋ฅธ ์Šคํƒ€์ผ ์ž‘์—…๐Ÿ‘ ๋น ๋ฆ„๐Ÿข ์ƒ๋Œ€์ ์œผ๋กœ ๋А๋ฆผ
์ฝ”๋“œ ์ผ๊ด€์„ฑ ์œ ์ง€๐Ÿค” ํด๋ž˜์Šค ์กฐํ•ฉ ์ฃผ์˜ ํ•„์š”๐Ÿ‘ ์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„๋กœ ๋ช…ํ™•ํ•จ
JS์™€ ์Šคํƒ€์ผ ํ†ตํ•ฉโŒ ๋ถ„๋ฆฌ๋จ๐Ÿ‘ ๊ฐ™์ด ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
๋””์ž์ธ ์‹œ์Šคํ…œ ๊ตฌ์ถ•๐Ÿ‘ ์ „์šฉ ํˆด์ฒ˜๋Ÿผ ํŽธ๋ฆฌํ•จ๐Ÿ‘ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์„ค์ • ํ•„์š”
๋Ÿฌ๋‹์ปค๋ธŒ๐Ÿค ๋‚ฎ์Œ๐Ÿ“ˆ ์กฐ๊ธˆ ์žˆ์Œ

๐Ÿ“ ๋‚ด๊ฐ€ ๋А๋‚€ ์ 

๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Tailwind๊ฐ€ ์ •๋ง ๋น ๋ฅด๊ณ  ํŽธํ•ด์„œ ์ž์ฃผ ์“ฐ๊ฒŒ ๋˜๋Š”๋ฐ,
๋””์ž์ธ ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด๋‚˜ ์žฌ์‚ฌ์šฉ์„ฑ์—์„œ๋Š” styled-components๊ฐ€ ํ›จ์”ฌ ๋ช…ํ™•ํ•˜๊ฒŒ ๋А๊ปด์กŒ๋‹ค.
์ •๋ฆฌํ•˜์ž๋ฉด,

  • ํ”„๋กœํ† ํƒ€์ž…/๋น ๋ฅธ UI ๊ฐœ๋ฐœ์—” Tailwind
  • ํŒ€ ํ”„๋กœ์ ํŠธ/๋””์ž์ธ ์‹œ์Šคํ…œ์—” styled-components
    ๊ฐ€ ์ข€ ๋” ์ž˜ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค!

๊ฒฐ๊ตญ ํ”„๋กœ์ ํŠธ ์„ฑ๊ฒฉ๊ณผ ํŒ€ ์Šคํƒ€์ผ์— ๋”ฐ๋ผ ์ •๋‹ต์ด ๋‹ฌ๋ผ์ง€๋Š” ๋“ฏ!

profile
๊ฐœ๋ฐœ์ž๋กœ ์ทจ์—…์„ ์ค€๋น„ ์ค‘ ์ด๋ฉฐ, ์—ด์‹ฌํžˆ ๊ณต๋ถ€ ์ค‘ ์ž…๋‹ˆ๋‹ค!

0๊ฐœ์˜ ๋Œ“๊ธ€