SFC

0taetaeยท2024๋…„ 12์›” 21์ผ

๐Ÿ“’ Component

  • ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ๋ธ”๋ก

๐Ÿ’กComponent ํŠน์ง•

  • UI๋ฅผ ๋…๋ฆฝ์ ์ด๊ณ  ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ผ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๊ฐ ๋ถ€๋ถ„์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ โ†’ ์•ฑ์€ ์ค‘์ฒฉ๋œ Component์˜ ํŠธ๋ฆฌ๋กœ ๊ตฌ์„ฑ๋จ

๐Ÿ“’ Single-File Components ๐Ÿ“Œ

  • ์ปดํฌ๋„ŒํŠธ์˜ ํ…œํ”Œ๋ฆฟ(html), ๋กœ์ง(JS) ๋ฐ ์Šคํƒ€์ผ(CSS)์„ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ฌถ์–ด๋‚ธ ํŠน์ˆ˜ํ•œ ํŒŒ์ผ ํ˜•์‹ (*.vue ํŒŒ์ผ)

๐Ÿ’ก SFC ๋ฌธ๋ฒ•

  • < template>, < script>, < style>๋กœ ๊ตฌ์„ฑ๋จ
  • ์–ธ์–ด ๋ธ”๋ก์˜ ์ž‘์„ฑ ์ˆœ์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ template โ†’ script โ†’ style ์ˆœ์„œ
  1. template
    • ๊ฐ *.vue ํŒŒ์ผ์€ ์ตœ์ƒ์œ„ ๋ธ”๋ก์„ ํ•˜๋‚˜๋งŒ ํฌํ•จ ๊ฐ€๋Šฅ
    • script setup
      • ๊ฐ *.vue ํŒŒ์ผ์€ ํ•˜๋‚˜์˜
      • ์ปดํฌ๋„ŒํŠธ์˜ setup() ํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ, ์ปดํฌ๋„ŒํŠธ์˜ ๊ฐ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ์‹คํ–‰
    • style scope
      • *.vue ํŒŒ์ผ์—๋Š” ์—ฌ๋Ÿฌ
      • scoped๊ฐ€ ์ง€์ •๋˜๋ฉด CSS๋Š” ํ˜„์žฌ ์ปดํฌ๋„ŒํŠธ์—๋งŒ ์ ์šฉ
    • ๐Ÿ“’ SFC build tool (Vite)

      ๐Ÿ’ก Node Package Manager (NPM)

      • Node.js์˜ ๊ธฐ๋ณธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž

      ๐Ÿ’ก vite ํŒจํ‚ค์ง€ ๊ตฌ์กฐ ๐Ÿ“Œ

      image.png

      1. node_modules
        • Node.js ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์™ธ๋ถ€ ํŒจํ‚ค์ง€๋“ค์ด ์ €์žฅ๋˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ
        • ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ ๋ชจ๋“ˆ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„
        • ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํŒจํ‚ค์ง€๋“ค์„ ํฌํ•จ
        • .gitignore์— ์ž‘์„ฑ๋จ
      2. package-lock.json
        • ํŒจํ‚ค์ง€๋“ค์˜ ์‹ค์ œ ์„ค์น˜ ๋ฒ„์ „, ์˜์กด์„ฑ ๊ด€๊ณ„, ํ•˜์œ„ ํŒจํ‚ค์ง€ ๋“ฑ์„ ํฌํ•จํ•˜์—ฌ ํŒจํ‚ค์ง€ ์„ค์น˜์— ํ•„์š”ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ํฌํ•จ
        • ํŒจํ‚ค์ง€๋“ค์˜ ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ๋ณด์žฅํ•˜์—ฌ, ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ˜‘์—ฝํ•˜๊ฑฐ๋‚˜ ์„œ๋ฒ„ ํ™˜๊ฒฝ์—์„œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ์˜์กด์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์คŒ
        • npm install ๋ช…๋ น์„ ํ†ตํ•ด ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•  ๋•Œ, ๋ช…์‹œ๋œ ๋ฒ„์ „๊ณผ ์˜์กด์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค์น˜
      3. package.json
        • ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”ํƒ€ ์ •๋ณด์™€ ์˜์กด์„ฑ ํŒจํ‚ค์ง€ ๋ชฉ๋ก์„ ํฌํ•จ
        • ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„, ๋ฒ„์ „, ์ž‘์„ฑ์ž, ๋ผ์ด์„ ์Šค ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฉ”ํƒ€ ์ •๋ณด๋ฅผ ์ •์˜
        • package-lock.json๊ณผ ํ•จ๊ป˜ ํ”„๋กœ์ ํŠธ์˜ ์˜์กด์„ฑ์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฒ„์ „ ์ถฉ๋Œ ๋ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ์—ญํ• 
      4. public ๋””๋ ‰ํ† ๋ฆฌ
        • ์ •์  ํŒŒ์ผ
          • ์†Œ์Šค์ฝ”๋“œ์—์„œ ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š”
          • ํ•ญ์ƒ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ–๋Š”
          • importํ•  ํ•„์š” ์—†๋Š”
        • ํ•ญ์ƒ root ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐ
          • public/icon.png๋Š” ์†Œ์Šค ์ฝ”๋“œ์—์„œ /icon.png๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Œ
      5. src ๋””๋ ‰ํ† ๋ฆฌ
        • ํ”„๋กœ์ ํŠธ์˜ ์ฃผ์š” ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๊ณณ
        • ์ปดํฌ๋„ŒํŠธ, ์Šคํƒ€์ผ, ๋ผ์šฐํŒ… ๋“ฑ ํ”„๋กœ์ ํŠธ์˜ ํ•ต์‹ฌ ์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌ
      6. src/assets
        • ํ”„๋กœ์ ํŠธ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ž์›(์ด๋ฏธ์ง€, ํฐํŠธ, ์Šคํƒ€์ผ ์‹œํŠธ ๋“ฑ)์„ ๊ด€๋ฆฌ
        • ์ปดํฌ๋„ŒํŠธ ์ž์ฒด์—์„œ ์ฐธ์กฐํ•˜๋Š” ๋‚ด๋ถ€ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ
        • ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์•„๋‹Œ ๊ณณ์—์„œ๋Š” public ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜ํ•œ ํŒŒ์ผ์„ ์‚ฌ์šฉ
      7. src/components
        • Vue ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ž‘์„ฑํ•˜๋Š” ๊ณณ
      8. src/App.vue
        • Vue ์•ฑ์˜ ์ตœ์ƒ์œ„ Root ์ปดํฌ๋„ŒํŠธ
        • ๋‹ค๋ฅธ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋“ค์„ ํฌํ•จ
        • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์˜ ๋ ˆ์ด์•„์›ƒ๊ณผ ๊ณตํ†ต์ ์ธ ์š”์†Œ๋ฅผ ์ •์˜
      9. src/main.js
        • Vue ์ธ์Šคํ„ฐ์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์—ญํ• 
        • ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ importํ•˜๊ณ  ์ „์—ญ ์„ค์ •์„ ์ˆ˜ํ–‰
      10. index.html
        • Vue ์•ฑ์˜ ๊ธฐ๋ณธ HTML ํŒŒ์ผ
        • ์•ฑ์˜ ์ง„์ž…์ (entry point)
        • Root ์ปดํฌ๋„ŒํŠธ์ธ App.vue๊ฐ€ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๋งˆ์šดํŠธ(mount) ๋จ
          • Vue ์•ฑ์ด SPA์ธ ์ด์œ 
        • ํ•„์š”ํ•œ ์Šคํƒ€์ผ ์‹œํŠธ, ์Šคํฌ๋ฆฝํŠธ ๋“ฑ์˜ ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Œ

      ๐Ÿ’ก Module

      • ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋…๋ฆฝ์ ์ธ ์ฝ”๋“œ ๋ธ”๋ก (*.js ํŒŒ์ผ)

      ๐Ÿ’ก Bundler

      • ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ๊ณผ ํŒŒ์ผ์„ ํ•˜๋‚˜(ํ˜น์€ ์—ฌ๋Ÿฌ ๊ฐœ)์˜ ๋ฒˆ๋“ค๋กœ ๋ฌถ์–ด ์ตœ์ ํ™”ํ•˜์—ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๋„๊ตฌ

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