⚛️ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…: CRA vs Vite

โš›๏ธ ๋ฆฌ์•กํŠธ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ธํŒ…: CRA vs Vite

๐ŸŽจ ์›น์‚ฌ์ดํŠธ์˜ ๋ฏธ์  ์š”์†Œ: CSS(Cascading Style Sheets) ์™„๋ฒฝ ํ•ด์„ค

์›น ๊ฐœ๋ฐœ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” ์„ธ ๊ฐ€์ง€ ํ•ต์‹ฌ ์–ธ์–ด๋Š” "HTML, CSS, JavaScript"์ž…๋‹ˆ๋‹ค. 
์ด ์ค‘ CSS๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋งค๋ ฅ์ ์ด๊ณ  ์‚ฌ์šฉ์ž ์นœํ™”์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐ ๊ฒฐ์ •์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.


HTML์ด ์ฝ˜ํ…์ธ ์˜ ๋ฐ์ดํ„ฐ์™€ ๊ตฌ์กฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ๋ผˆ๋Œ€๋ผ๋ฉด, 
CSS๋Š” ๊ทธ ๋ผˆ๋Œ€์— ์ƒ๋ช…์„ ๋ถˆ์–ด๋„ฃ๋Š” ๋””์ž์ธ, ์ƒ‰์ƒ, ๋ ˆ์ด์•„์›ƒ์„ ๋‹ด๋‹นํ•˜๋Š” ์˜์ƒ์ž…๋‹ˆ๋‹ค. 
CSS์˜ ์ดํ•ด ์—†์ด๋Š” ํ˜„๋Œ€์ ์ธ ์›น์‚ฌ์ดํŠธ ๊ตฌํ˜„์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ CSS ์ •์˜์™€ ํ˜„๋Œ€ ์›น์—์„œ์˜ ์—ญํ• 

ํ•ต์‹ฌ ์ •์˜ 
'CSS (Cascading Style Sheets)'๋Š” HTML ๋ฌธ์„œ์˜ ์Šคํƒ€์ผ์„ ์ •์˜ํ•˜๋Š” ์Šคํƒ€์ผ ์‹œํŠธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. 'Cascading'์€ ์—ฌ๋Ÿฌ ์Šคํƒ€์ผ์ด ๊ณ„๋‹จ์‹์œผ๋กœ ์ ์šฉ๋˜๋ฉฐ ์ตœ์ข… ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ํŠน์ง•์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

CSS์˜ ๊ฐ€์žฅ ํฐ ์—ญํ• ์€ ๋‚ด์šฉ(HTML)๊ณผ ํ‘œํ˜„(CSS)์„ ๋ถ„๋ฆฌํ•˜๋„๋ก ๋•๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด๋Š” ์›น ํ‘œ์ค€์˜ ํ•ต์‹ฌ ์›์น™ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‹ค์งˆ์ ์ธ ์ด์ ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

CSS ์‚ฌ์šฉ์˜ 3๊ฐ€์ง€ ํ•ต์‹ฌ ์ด์ 

  1. ํšจ์œจ์ ์ธ ๊ด€๋ฆฌ: ํ•˜๋‚˜์˜ CSS ํŒŒ์ผ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ์ˆ˜๋ฐฑ ํŽ˜์ด์ง€์˜ ๋””์ž์ธ์„ ์ผ๊ด„์ ์œผ๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์–ด, ์œ ์ง€๋ณด์ˆ˜ ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์ด ์ ˆ๊ฐ๋ฉ๋‹ˆ๋‹ค.

  2. ์ผ๊ด€๋œ ๋””์ž์ธ: ์›น์‚ฌ์ดํŠธ ์ „์ฒด์— ํ†ต์ผ๋œ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜์—ฌ ๋ธŒ๋žœ๋“œ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋ฐ˜์‘ํ˜• ์›น ๊ฐ€๋Šฅ: ์Šค๋งˆํŠธํฐ, ํƒœ๋ธ”๋ฆฟ, ๋ฐ์Šคํฌํ†ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ ํ™˜๊ฒฝ์— ๋งž์ถฐ "๋ฏธ๋””์–ด ์ฟผ๋ฆฌ(Media Query)"๋ฅผ ์‚ฌ์šฉํ•ด ๋™์ ์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ์กฐ์ •ํ•˜๋Š” ๋ฐ˜์‘ํ˜• ๋””์ž์ธ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

CSS์˜ ๊ธฐ๋Šฅ์  ํ™•์žฅ: CSS3์˜ ๋“ฑ์žฅ ์ดˆ๊ธฐ CSS๋Š” ๊ฐ„๋‹จํ•œ ์ƒ‰์ƒ ๋ฐ ํ…์ŠคํŠธ ์Šคํƒ€์ผ๋ง์— ๊ตญํ•œ๋˜์—ˆ์ง€๋งŒ, CSS3์˜ ๋“ฑ์žฅ์œผ๋กœ ๊ธฐ๋Šฅ์ด ํญ๋ฐœ์ ์œผ๋กœ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

CSS3๋Š” ์›น ๋””์ž์ด๋„ˆ์™€ ๊ฐœ๋ฐœ์ž๊ฐ€ Flexbox๋‚˜ Grid์™€ ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ๋ ˆ์ด์•„์›ƒ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ํ–ˆ๊ณ ,
๋ณต์žกํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜, ๊ทธ๋ฆผ์ž ํšจ๊ณผ, ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ(border-radius) ๋“ฑ์˜ ์‹œ๊ฐ ํšจ๊ณผ๋ฅผ ์ด๋ฏธ์ง€ ํŒŒ์ผ ์—†์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

์ด๋Š” ์›น์‚ฌ์ดํŠธ์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๊ฐœ๋ฐœ ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ๋ฐ ํฌ๊ฒŒ ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

⚙️ CSS ์Šคํƒ€์ผ์„ HTML์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์šฐ์„ ์ˆœ์œ„

์ž‘์„ฑ๋œ CSS ์ฝ”๋“œ๋ฅผ HTML ๋ฌธ์„œ์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํšจ์œจ์„ฑ๊ณผ ๋ชฉ์ ์— ๋”ฐ๋ผ ์„ธ ๊ฐ€์ง€ ํ‘œ์ค€ ๋ฐฉ์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

1.

์™ธ๋ถ€ ์Šคํƒ€์ผ (External Style Sheet) - ํ”„๋กœ์˜ ์„ ํƒ ๊ฐ€์žฅ ๊ถŒ์žฅ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

์Šคํƒ€์ผ์ด ์ ์šฉ๋  .css ํŒŒ์ผ์„ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ <link> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด HTML ๋ฌธ์„œ์˜ <head> ์˜์—ญ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

ํŒŒ์ผ์ด ๋ถ„๋ฆฌ๋˜๋ฏ€๋กœ ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ๋†’๊ณ , ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ CSS ํŒŒ์ผ์„ "์บ์‹ฑ(caching)"ํ•˜์—ฌ ํŽ˜์ด์ง€ ๋กœ๋”ฉ ์†๋„์—๋„ ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2.

๋‚ด๋ถ€ ์Šคํƒ€์ผ (Internal Style Sheet) HTML ๋ฌธ์„œ <head> ํƒœ๊ทธ ์•ˆ์— <style> ํƒœ๊ทธ๋ฅผ ์—ด์–ด ์ง์ ‘ CSS ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. 

์Šคํƒ€์ผ์ด ํ•œ ํŽ˜์ด์ง€์—๋งŒ ์ ์šฉ๋˜๋ฉฐ, ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ๋Š” ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๋•Œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.

⚠️ ์šฐ์„ ์ˆœ์œ„ ์›์น™ (Cascading) 'Cascading'์˜ ์›์น™์— ๋”ฐ๋ผ, 
๋™์ผํ•œ ์š”์†Œ์— ์Šคํƒ€์ผ์ด ์ค‘๋ณต ์ ์šฉ๋  ๊ฒฝ์šฐ ์ธ๋ผ์ธ ์Šคํƒ€์ผ > ๋‚ด๋ถ€ ์Šคํƒ€์ผ > ์™ธ๋ถ€ ์Šคํƒ€์ผ ์ˆœ์„œ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์ ์šฉ๋˜์–ด ์ตœ์ข… ์Šคํƒ€์ผ์ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
 "๋ช…์‹œ๋„(Specificity)"์™€ ์†Œ์Šค ์ˆœ์„œ๋„ ์ค‘์š”ํ•œ ๊ฒฐ์ • ์š”์†Œ์ž…๋‹ˆ๋‹ค.

๐Ÿ”‘ CSS ๋ฌธ๋ฒ•๊ณผ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ๋„๊ตฌ

CSS ์ฝ”๋“œ๋Š” "์„ ํƒ์ž { ์†์„ฑ: ๊ฐ’; }"์ด๋ผ๋Š” ๊ฐ„๋‹จํ•œ ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€๋งŒ, ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ˆ˜์ฒœ ์ค„์— ๋‹ฌํ•˜๋Š” ์Šคํƒ€์ผ ์ฝ”๋“œ๊ฐ€ ์ž‘์„ฑ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์ž์˜ ์ค‘์š”์„ฑ ์„ ํƒ์ž๋Š” ์Šคํƒ€์ผ์„ ์ ์šฉํ•  ๋Œ€์ƒ์„ ์ •ํ™•ํ•˜๊ฒŒ ์ง‘์–ด๋‚ด๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค. 

ํƒœ๊ทธ ์„ ํƒ์ž ์™ธ์—๋„ ํด๋ž˜์Šค(.), ์•„์ด๋””(#), 
๊ทธ๋ฆฌ๊ณ  ํŠน์ • ์ƒํƒœ๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฐ€์ƒ ํด๋ž˜์Šค(:hover, :focus) ๋“ฑ ๋‹ค์–‘ํ•œ ์„ ํƒ์ž๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, 
์ด๋“ค์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด CSS ์ˆ™๋ จ๋„์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค.

๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ด๋Š” ์ „์ฒ˜๋ฆฌ๊ธฐ ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” Sass(SCSS)๋‚˜ Less์™€ ๊ฐ™์€ CSS ์ „์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค.

 ์ด ๋„๊ตฌ๋“ค์€ CSS์— ๋ณ€์ˆ˜, ํ•จ์ˆ˜, ์ค‘์ฒฉ ๋“ฑ์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์„ ๋„์ž…ํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ์Šคํƒ€์ผ ์ฝ”๋“œ ๊ด€๋ฆฌ๋ฅผ ํ›จ์”ฌ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. ์ตœ์ข…์ ์œผ๋กœ๋Š” ์ผ๋ฐ˜ CSS ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ๋ธŒ๋ผ์šฐ์ €์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€ ์“ฐ๊ธฐ