# [[CSS-in-JS]] ## ๐Ÿ“Œ Brief Summary CSS-in-JS๋Š” JavaScript ํŒŒ์ผ ๋‚ด์— ์ง์ ‘ CSS๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์Šคํƒ€์ผ๊ณผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ™์€ ์œ„์น˜(co-location)์— ๋ฐฐ์น˜ํ•˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ ์Šคํƒ€์ผ๋ง ์ ‘๊ทผ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ styled-components์™€ Emotion ๋“ฑ์ด ์žˆ์œผ๋ฉฐ, ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์„ ํ™œ์šฉํ•ด ์ปดํฌ๋„ŒํŠธ์˜ ์ƒํƒœ๋‚˜ props์— ๊ธฐ๋ฐ˜ํ•œ ๋™์  ์Šคํƒ€์ผ๋ง์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— CSS๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฃผ์ž…ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ์™€ React Server Components(RSC)์™€์˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ์ธํ•ด ์ตœ๊ทผ์—๋Š” Zero-runtime ๋ฐฉ์‹์ด๋‚˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํผ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ(Tailwind CSS ๋“ฑ)์™€ ๋น„๊ต๋˜๋ฉฐ ์•„ํ‚คํ…์ฒ˜์  ์žฌํ‰๊ฐ€๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ## ๐Ÿ“– Core Content * **์ฃผ์š” ์žฅ์  ๋ฐ ํŠน์ง•:** CSS-in-JS๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ณ€์ˆ˜, ์ƒํƒœ, props ๋“ฑ์„ ์ง์ ‘ ํ™œ์šฉํ•ด ๋™์ ์ธ ์Šคํƒ€์ผ๋ง์„ ์†์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค [1]. ์ปดํฌ๋„ŒํŠธ์™€ ์Šคํƒ€์ผ์ด ๊ฐ™์€ ํŒŒ์ผ์— ๊ณต์กดํ•˜๋ฏ€๋กœ ์ปดํฌ๋„ŒํŠธ ์‚ญ์ œ ์‹œ ์Šคํƒ€์ผ๋„ ํ•จ๊ป˜ ์ œ๊ฑฐ๋˜์–ด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์šฉ์ดํ•˜๋ฉฐ, ๊ณผ๊ฑฐ CSS์˜ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ถฉ๋Œ ๋ฌธ์ œ๋‚˜ ์Šคํƒ€์ผ์ด ์—‡๋‚˜๊ฐ€๋Š” ๋ฌธ์ œ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค [1, 2]. ๋˜ํ•œ ๋‚ด๋ถ€์ ์ธ ํ…Œ๋งˆ ํ”„๋กœ๋ฐ”์ด๋”(Theme Provider)๋ฅผ ํ†ตํ•ด ๋ผ์ดํŠธ/๋‹คํฌ ๋ชจ๋“œ ๋“ฑ ๋‹ค์ค‘ ํ…Œ๋งˆ ๊ด€๋ฆฌ๊ฐ€ ์ˆ˜์›”ํ•˜๋ฉฐ, TypeScript๋ฅผ ํ†ตํ•œ ํƒ€์ž… ์•ˆ์ „์„ฑ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [1, 2]. * **๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ๋ฐ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ ํ•œ๊ณ„:** ๊ฐ€์žฅ ํฐ ๋‹จ์ ์€ ๋ธŒ๋ผ์šฐ์ € ๋Ÿฐํƒ€์ž„ ์‹œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ CSS ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๊ณ  `