๐ Component
- ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ฝ๋ ๋ธ๋ก
๐กComponent ํน์ง
- UI๋ฅผ ๋
๋ฆฝ์ ์ด๊ณ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ผ๋ถ๋ถ์ผ๋ก ๋ถํ ํ๊ณ ๊ฐ ๋ถ๋ถ์ ๊ฐ๋ณ์ ์ผ๋ก ๋ค๋ฃฐ ์ ์์ โ ์ฑ์ ์ค์ฒฉ๋ Component์ ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋จ
๐ Single-File Components ๐
- ์ปดํฌ๋ํธ์ ํ
ํ๋ฆฟ(html), ๋ก์ง(JS) ๋ฐ ์คํ์ผ(CSS)์ ํ๋์ ํ์ผ๋ก ๋ฌถ์ด๋ธ ํน์ํ ํ์ผ ํ์ (*.vue ํ์ผ)
๐ก SFC ๋ฌธ๋ฒ
- < template>, < script>, < style>๋ก ๊ตฌ์ฑ๋จ
- ์ธ์ด ๋ธ๋ก์ ์์ฑ ์์๋ ์ผ๋ฐ์ ์ผ๋ก template โ script โ style ์์
- template
- ๊ฐ *.vue ํ์ผ์ ์ต์์ ๋ธ๋ก์ ํ๋๋ง ํฌํจ ๊ฐ๋ฅ
- script setup
- ๊ฐ *.vue ํ์ผ์ ํ๋์
- ์ปดํฌ๋ํธ์ setup() ํจ์๋ก ์ฌ์ฉ, ์ปดํฌ๋ํธ์ ๊ฐ ์ธ์คํด์ค์ ๋ํด ์คํ
- style scope
- *.vue ํ์ผ์๋ ์ฌ๋ฌ
- scoped๊ฐ ์ง์ ๋๋ฉด CSS๋ ํ์ฌ ์ปดํฌ๋ํธ์๋ง ์ ์ฉ
๐ก Node Package Manager (NPM)
- Node.js์ ๊ธฐ๋ณธ ํจํค์ง ๊ด๋ฆฌ์
๐ก vite ํจํค์ง ๊ตฌ์กฐ ๐

- node_modules
- Node.js ํ๋ก์ ํธ์์ ์ฌ์ฉ๋๋ ์ธ๋ถ ํจํค์ง๋ค์ด ์ ์ฅ๋๋ ๋๋ ํ ๋ฆฌ
- ํ๋ก์ ํธ์ ์์กด์ฑ ๋ชจ๋์ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๊ณต๊ฐ
- ํ๋ก์ ํธ๊ฐ ์คํ๋ ๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํจํค์ง๋ค์ ํฌํจ
- .gitignore์ ์์ฑ๋จ
- package-lock.json
- ํจํค์ง๋ค์ ์ค์ ์ค์น ๋ฒ์ , ์์กด์ฑ ๊ด๊ณ, ํ์ ํจํค์ง ๋ฑ์ ํฌํจํ์ฌ ํจํค์ง ์ค์น์ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ํฌํจ
- ํจํค์ง๋ค์ ์ ํํ ๋ฒ์ ์ ๋ณด์ฅํ์ฌ, ์ฌ๋ฌ ๊ฐ๋ฐ์๊ฐ ํ์ฝํ๊ฑฐ๋ ์๋ฒ ํ๊ฒฝ์์ ์ผ๊ด์ฑ ์๋ ์์กด์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค
- npm install ๋ช
๋ น์ ํตํด ํจํค์ง๋ฅผ ์ค์นํ ๋, ๋ช
์๋ ๋ฒ์ ๊ณผ ์์กด์ฑ์ ๊ธฐ๋ฐ์ผ๋ก ์ค์น
- package.json
- ํ๋ก์ ํธ์ ๋ฉํ ์ ๋ณด์ ์์กด์ฑ ํจํค์ง ๋ชฉ๋ก์ ํฌํจ
- ํ๋ก์ ํธ์ ์ด๋ฆ, ๋ฒ์ , ์์ฑ์, ๋ผ์ด์ ์ค ๋ฑ๊ณผ ๊ฐ์ ๋ฉํ ์ ๋ณด๋ฅผ ์ ์
- package-lock.json๊ณผ ํจ๊ป ํ๋ก์ ํธ์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ณ , ๋ฒ์ ์ถฉ๋ ๋ฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ์ญํ
- public ๋๋ ํ ๋ฆฌ
- ์ ์ ํ์ผ
- ์์ค์ฝ๋์์ ์ฐธ์กฐ๋์ง ์๋
- ํญ์ ๊ฐ์ ์ด๋ฆ์ ๊ฐ๋
- importํ ํ์ ์๋
- ํญ์ root ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ฌ ์ฐธ์กฐ
- public/icon.png๋ ์์ค ์ฝ๋์์ /icon.png๋ก ์ฐธ์กฐํ ์ ์์
- src ๋๋ ํ ๋ฆฌ
- ํ๋ก์ ํธ์ ์ฃผ์ ์์ค ์ฝ๋๋ฅผ ํฌํจํ๋ ๊ณณ
- ์ปดํฌ๋ํธ, ์คํ์ผ, ๋ผ์ฐํ
๋ฑ ํ๋ก์ ํธ์ ํต์ฌ ์ฝ๋๋ฅผ ๊ด๋ฆฌ
- src/assets
- ํ๋ก์ ํธ ๋ด์์ ์ฌ์ฉ๋๋ ์์(์ด๋ฏธ์ง, ํฐํธ, ์คํ์ผ ์ํธ ๋ฑ)์ ๊ด๋ฆฌ
- ์ปดํฌ๋ํธ ์์ฒด์์ ์ฐธ์กฐํ๋ ๋ด๋ถ ํ์ผ์ ์ ์ฅํ๋๋ฐ ์ฌ์ฉ
- ์ปดํฌ๋ํธ๊ฐ ์๋ ๊ณณ์์๋ public ๋๋ ํ ๋ฆฌ์ ์์นํ ํ์ผ์ ์ฌ์ฉ
- src/components
- Vue ์ปดํฌ๋ํธ๋ค์ ์์ฑํ๋ ๊ณณ
- src/App.vue
- Vue ์ฑ์ ์ต์์ Root ์ปดํฌ๋ํธ
- ๋ค๋ฅธ ํ์ ์ปดํฌ๋ํธ๋ค์ ํฌํจ
- ์ ํ๋ฆฌ์ผ์ด์
์ ์ฒด์ ๋ ์ด์์๊ณผ ๊ณตํต์ ์ธ ์์๋ฅผ ์ ์
- src/main.js
- Vue ์ธ์คํฐ์ค๋ฅผ ์์ฑํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๊ธฐํํ๋ ์ญํ
- ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ importํ๊ณ ์ ์ญ ์ค์ ์ ์ํ
- index.html
- Vue ์ฑ์ ๊ธฐ๋ณธ HTML ํ์ผ
- ์ฑ์ ์ง์
์ (entry point)
- Root ์ปดํฌ๋ํธ์ธ App.vue๊ฐ ํด๋น ํ์ด์ง์ ๋ง์ดํธ(mount) ๋จ
- ํ์ํ ์คํ์ผ ์ํธ, ์คํฌ๋ฆฝํธ ๋ฑ์ ์ธ๋ถ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ ์ ์์
๐ก Module
- ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๋
๋ฆฝ์ ์ธ ์ฝ๋ ๋ธ๋ก (*.js ํ์ผ)
๐ก Bundler
- ์ฌ๋ฌ ๋ชจ๋๊ณผ ํ์ผ์ ํ๋(ํน์ ์ฌ๋ฌ ๊ฐ)์ ๋ฒ๋ค๋ก ๋ฌถ์ด ์ต์ ํํ์ฌ ์ ํ๋ฆฌ์ผ์ด์
์์ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด์ฃผ๋ ๋๊ตฌ