๐ CSS-in-JS์ ํค์ด์ง๋ ์ด์
Spot์ด๋ผ๋ ์ ํ์ ๋ง๋๋ ํ์์ Emotion์ ๋ฒ๋ฆฌ๊ณ Sass Modules(+Utility Class)๋ก ๋ฐ๊พธ๊ฒ ๋ ์ด์ ๋ฅผ ๋ค๋ฃฌ ๊ธ์ ๋๋ค. ์ ์๋ CSS-in-JS์ ์ฅ์ ๊ณผ ๋จ์ ๊ทธ๋ฆฌ๊ณ ๋ชป๋ ์ (Ugly)์ ์๊ฐํ๊ณ ์ฑ๋ฅ ์ด์๋ก Emotion๊ณผ ํค์ด์ก๋ค๊ณ ๋งํฉ๋๋ค. ์ฅ์ ์ ์ธ ๊ฐ์ง. ์คํ์ผ์ ์ ํ๋ ์์ญ์์ ๊ด๋ฆฌํ๋ค๋ ์ (Locally-scoped styles), ์ปดํฌ๋ํธ ์ฝ๋์ ์คํ์ผ ์ฝ๋๋ฅผ ํ ๊ณณ์ ๋ชจ์ ๋ณผ ์ ์๋ค๋ ์ (Colocation) ๊ทธ๋ฆฌ๊ณ ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์๋ฅผ ์คํ์ผ์ ์ ์ฉํ ์ ์๋ค๋ ์ ์ ๋๋ค. ๋จ์ ๋ ์ธ ๊ฐ์ง์ ๋๋ค. ๋ฐํ์์ ์คํ์ผ ์ง๋ ฌํํ๋ฉด์ ์ฑ๋ฅ์ ๋ถ์ ์ ์ธ ์ํฅ์ ์ค๋ค๋ ์ , CSS-in-JS๋ฅผ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ธํด ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋ ์ ๊ทธ๋ฆฌ๊ณ React DevTools๋ฅผ ๋ณด๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ ๋ค๋ ์ ์ ๋๋ค. ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋๋ ๋ถ๋ถ์ ์ฒซ๋ฒ์งธ ๋จ์ ์ธ ์คํ์ผ ์ง๋ ฌํ๋ก ์ธํ ์ฑ๋ฅ ์ด์์ ๋๋ค. ๋ฆฌ์กํธ๊ฐ ๋ ๋๋งํ๋ ์์ ์ ๋งค๋ฒ ์คํ์ผ์ ๊ณ์ฐํ๋ ๊ฒฝ์ฐ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ๋ณด๋ค ์๋๊ฐ ๋๋ ค์ง๋ค๋ ์ ์ด์ฃ . ์ด๋ฅผ ์ํด ๋ฐํ์ ๋น์ฉ์ด ์๋ Sass๋ฅผ ๋์ ํ ๊ฒ์ผ๋ก ๊ฒฐ์ ํฉ๋๋ค. ์ฌ์ค ๊ฐ๋ฐ์์ ํธ์, ๊ฒฝํ(DX)์ ๋๊ณ ๋ดค์ ๋ CSS-in-JS์ ์ฅ์ ์ด ํจ์ฌ ๋๋๋ฌ์ง๋๋ค. ์ ์๋ ๊ธ์ ๋ง๋ฏธ์์ "Spot์ ๊ฒฝ์ฐ, Emotion์ ๋ฐํ์ ์ฑ๋ฅ๋น์ฉ์ด DX์ ์ด์ ์ ํจ์ฌ ๋ฅ๊ฐ"ํ๊ธฐ์ Emotion์ ๋ฒ๋ฆฌ๋ ๊ฒฐ์ ์ ํ๋ค๊ณ ๋งํฉ๋๋ค. ๊ฐ์ธ์ ์ผ๋ก๋ ์ด ๊ธ์ด ๋ง์ ๊ฐ๋ฐ์๊ฐ CSS-in-JS๋ฅผ ๋ ์ข์ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉ๋์์ผ๋ฉด ํ๋ ๋ง์์ผ๋ก ์ฐ์ธ ๊ฒ ์๋๊ฐ ์ถ์ต๋๋ค. ์ด๋ค ๊ธฐ์ ์ด๋ ์ค์ฉํ๋ฉด ๋จ์ ์ด ์ฅ์ ๋ณด๋ค ๊ทน๋ํ๋ ์ ์์ผ๋๊น์. Spot ํ๊ณผ ๊ฐ์ ์ํฉ์ด ์๋๋ผ๋ฉด CSS-in-JS์ ์คํ์ผ ์ง๋ ฌํ๋ฅผ ๊ณผ๋ํ๊ฒ ๋ฐ์์ํค๊ณ ์๋์ง ๋ฐ์ฑํ๋ ์ชฝ์ผ๋ก ์ด ๊ธ์ ์ดํดํ๋ฉด ์ข๊ฒ ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค.