MVVM ์ด๋?
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ ํ๋ ์ ํ ์ด์ ๋ก์ง์ UI๋ก๋ถํฐ ๋ถ๋ฆฌํ๋ ๊ฒ์ด๋ค.
- ์ญ์ฌ : ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ํ์ฉํ ํ๊ฒฝ์์ ๋ฐ์ดํฐ์ ํ๋ ์ ํ ์ด์ ๋ก์ง์ ๋ถ๋ฆฌํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ๋์์ธ ํจํด์ด๋ค.
1. ๋ชจ๋ธ Model
- ๋น์ฆ๋์ค ๋ก์ง๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฌ๋ค.2. ๋ทฐ View
- UI์ UI ๋ก์ง์ ๋ค๋ฃฌ๋ค.3. ๋ทฐ ๋ชจ๋ธ View Model
- View ๋ฅผ ํํํ๊ธฐ์ํด ๋ง๋ , View๋ฅผ ์ํ Model์ด๋ค.
View๋ฅผ ๋ํ๋ด์ฃผ๊ธฐ ์ํ Model ์ด์ View ๋ฅผ ๋ํ๋ด๊ธฐ ์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๋ถ๋ถ์ด๋ค.
- View ๋ฅผ ํํํ๊ธฐ์ํด ๋ง๋ , View๋ฅผ ์ํ Model์ด๋ค.
๋์
- ์ฌ์ฉ์์ Action๋ค์ View๋ฅผ ํตํด ๋ค์ด์ค๊ฒ ๋จ
- View์ Action์ด ๋ค์ด์ค๋ฉด, Command ํจํด์ผ๋ก View Model์ Action์ ์ ๋ฌ
- View Model์ Model์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญ
- Model์ View Model์๊ฒ ์์ฒญ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์๋ต
- View Model์ ์๋ต ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๊ณตํ์ฌ ์ ์ฅ
- View๋ View Model๊ณผ Data Bindingํ์ฌ ํ๋ฉด์ ๋ํ๋
Vue.js ๋?
- ์น ํ์ด์ง ํ๋ฉด์ ๊ฐ๋ฐํ๊ธฐ ์ํ frontend framework
- MVVM ํจํด์ ViewModel ๋ ์ด์ด์ ํด๋นํ๋ ํ๋ฉด๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค.
- ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ์ ์ ๊ณตํ๋ค.
- ์ปดํฌ๋ํธ ๊ธฐ๋ฐ ํ๋ ์์ํฌ์ด๋ค.
- ๋ฆฌ์กํธ์ ์ต๊ทค๋ฌ์ ์ฅ์ ์ ๊ฐ์ก๋ค.
- ์ต๊ทค๋ฌ์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ ๋ฆฌ์กํธ์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฅ์ ์ ๊ฒฐํฉํ๋ค.ํน์ง : Reactivity๋ฐ์ดํฐ์ ๋ณํ์ ๋ฐ๋ผ ํ๋ฉด์ด ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋งํ๋ค.
(์ฝ๋ ์์ ํ ์๋ก๊ณ ์นจ์ ํตํด ๋ค์ ๋ก๋ฉ์ ํ ํ์๊ฐ ์๋ค.)
- ์ต๊ทค๋ฌ์ ์๋ฐฉํฅ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊ณผ ๋ฆฌ์กํธ์ ๋จ๋ฐฉํฅ ๋ฐ์ดํฐ ํ๋ฆ์ ์ฅ์ ์ ๊ฒฐํฉํ๋ค.ํน์ง : Reactivity๋ฐ์ดํฐ์ ๋ณํ์ ๋ฐ๋ผ ํ๋ฉด์ด ์๋์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋งํ๋ค.
Vue.js ํ๋ก์ ํธ ์์ฑ
๊ธฐ๋ณธ์ ์ผ๋ก npm(Node.js ์ค์น) ๊ณผ git์ด ์ค์น ๋์ด์์ด์ผ ์คํ ๊ฐ๋ฅํ๋ค.
1. Vue CLI ์ค์น
vue-cli ๋ ๊ธฐ๋ณธ Vue ๊ฐ๋ฐํ๊ฒฝ์ ์ค์ ํด์ฃผ๋ ๋๊ตฌ์ด๋ค.
CLI ?
๋ช ๋ น ์ค ์ธํฐํ์ด์ค(CLI, Command line interface) ๋๋ ๋ช ๋ น์ด ์ธํฐํ์ด์ค๋ ํ ์คํธ ํฐ๋ฏธ๋์ ํตํด ์ฌ์ฉ์์ ์ปดํจํฐ๊ฐ ์ํธ ์์ฉํ๋ ๋ฐฉ์์ ๋ปํ๋ค.
npm install -g @vue/cli
ํฐ๋ฏธ๋์์ ์์๊ฐ์ด ์ ๋ ฅํ์ฌ ์ค์นํ๋ค.
2. vue ํ๋ก์ ํธ ์์ฑ
์ํ๋ ๊ฒฝ๋ก์์
vue create ํ๋ก์ ํธ๋ช
์ ์ ๋ ฅํ์ฌ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋ค.
Default ์ต์ ์ ์ ํํ๋ค.
3. vue ์๋ฒ ์์
npm run serve
๋ฅผ ํตํด ์๋ฒ๋ฅผ ์์ํ๋ค.
Vue.js ํ๋ก์ ํธ ๊ตฌ์กฐ
1. node_modules
- npm ์ผ๋ก ์ค์น๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ๋ชจ์ฌ์๋ ๋๋ ํ ๋ฆฌ2. public > index.html
- npm run serve ๋ฅผ ํตํด ์ค์ ์คํ๋๋ ํ์ผ
- ํ๋ก์ ํธ ๋ฐฐํฌ์ ํ์ํ ํ์ผ
- ์ค์ build ๋ ํ์ผ๋ค์ src ์๋์ main.js ๋ฑ ์ฌ๋ฌ ํ์ผ๋ค์ ์ข
ํฉํด์
์ต์ํ์ ํ์ผ๋ก ๋ฌถ์ด์ ์ฃผ์ 3. src - ์ค์ ๋๋ถ๋ถ์ ์ฝ๋ฉ์ด ์ด๋ฃจ์ด์ง๋ ๋๋ ํ ๋ฆฌ
- ์ ํ๋ฆฌํ
์ด์
์ด ๋์ํ๋๋ฐ ํ์ํ๋ ๋ก์ง๋ค์ด ์์น
- api/ : api ํจ์
- assets/ : ์ด๋ฏธ์ง, ๊ธฐํ ๋ฉํฐ๋ฏธ๋์ด ๋ฑ ํ์ผ๋ค์ ์ ์ฅํ๋ ์ฅ์
- compoments/ : vue ์์ค๋ค์ ์ ์ฅํ๋ ์ฅ์
- routes/ : vue-router ์ค์ ์ ์ ์ฅํ๋ ์ฅ์
- store/ : vuex ๋ฅผ ์ด์ฉํ ์ํ๊ด๋ฆฌ
- utils/ : ํํฐ ๋ฑ์ ์ ํธ๋ฆฌํฐ ํจ์
- views/ : ๋ผ์ฐํฐ ํ์ด์ง
- App.vue : ํ์ด์ง๊ฐ ์์๋๋ ์ต์ด์ ์ปดํฌ๋ํธ
- main.js : ์ง์ ์ . ๊ฐ์ฅ๋จผ์ ์์๋๋ javascript ํ์ผ๋ก vue instance ์์ฑํ๋ ์ญํ
4. .gitignore
- git์์ ํน์ ํ์ผ ํน์ ๋๋ ํ ๋ฆฌ๋ฅผ ๊ด๋ฆฌ ๋์์์ ์ ์ธํ ๋ ์ฌ์ฉํ๋ ํ์ผ5. package.json
- dependency ์ค์ ํ๋ ํ์ผ๋ก, maven ์ ๋น์ ํ๋ฉด repository ์ญํ 6. babel.config.js
- js์ ๋ฒ์ ์ ๋ณํํด์ฃผ๋ babel ์ ์ค์ ํ์ผ7. jsconfig.json
- import ๊ฒฝ๋ก๋ฅผ ../../ ์ ๊ฐ์ ์๋๊ฒฝ๋ก๊ฐ ์๋ @ ๋ก ์ ๋๊ฒฝ๋ก๋ก ํ๊ธฐํ๊ธฐ ์ํ ์ค์ 8. vue.config.js
- vue cli ํ๊ฒฝ์ค์ ๊ณผ webpack ์ค์ ๋ฑ์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ์ฃผ๋ก ์ธ๋ถ ์ฐธ์กฐํ์ผ์ ๊ฒฝ๋ก๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฐ์ธ๋ค. publicPath ๋ณ๊ฒฝ
- ํ๋ก์ ์ค์ ๊ฐ
์ฐธ์กฐ
MVVM ํจํด์ด๋?
Vue.js ๋ ๋ฌด์์ธ๊ฐ?
vue.js ์ค์น ๋ฐ ์ธํ
vue-cli๋ก ๊ฐ๋ฐํ๊ฒฝ
Vue.js ํ๋ก์ ํธ ๊ตฌ์กฐ
Vue.js-03 ํ๋ก์ ํธ๊ตฌ์กฐ
vue-proxy ์ฌ์ฉํ๊ธฐ
โ ์ด๋ฏธ ์งํ์ค์ธ ํ๋ก์ ํธ์ vue ์ค์นํ๊ธฐ
โ Vue ๊ฐ๋ฐํ๊ฒฝ ๋ง๋ค๊ธฐ
๋ฐ์ํ
'Vue.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Vue.js] Chart.js ๋์ ๋ง๋ ๊ทธ๋ํ ์ดํฉ ํ์ํ๊ธฐ (Stack Bar, Total) (1) | 2022.10.25 |
---|---|
[Vue.js] Hot Reload ๋์ ์ํ ๋ (0) | 2022.10.18 |
Vue.js(4) Router ๋ฐ Axios, async await ๊ฐ๋ (1) | 2022.10.09 |
Vue.js(3) Vue ์ธ์คํด์ค ์์ฑ ๋ฐ ์ปดํฌ๋ํธ (0) | 2022.10.09 |
Vue.js(2) vue ์ธ์คํด์ค ๋ฐ ํ ํ๋ฆฟ ๋ฌธ๋ฒ (0) | 2022.10.09 |
๋๊ธ