Vue Instance
MVVM Pattern
โ ์ํํธ์จ์ด ์ํคํ
์ฒ ํจํด์ ์ผ์ข
โ ๋งํฌ์
์ธ์ด๋ก ๊ตฌํํ๋ ๊ทธ๋ํฝ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(view)์ ๊ฐ๋ฐ์ Back-end(model)๋ก๋ถํฐ ๋ถ๋ฆฌ์์ผ view๊ฐ ์ด๋ ํน์ ํ ๋ชจ๋ธ ํ๋ซํผ์ ์ข
์๋์ง ์๋๋ก ํ๋ค.
โ View: ์ฐ๋ฆฌ ๋์ ๋ณด์ด๋ ๋ถ๋ถ(DOM)
โ Model : ์ค์ ๋ฐ์ดํฐ (JSON)
โ View Model (Vue)
- View๋ฅผ ์ํ Model
- View์ ์ฐ๊ฒฐ(binding)๋์ด Action์ ์ฃผ๊ณ ๋ฐ์
- Model์ด ๋ณ๊ฒฝ๋๋ฉด View Model๋ ๋ณ๊ฒฝ๋๊ณ ๋ฐ์ธ๋ฉ๋ View๋ ๋ณ๊ฒฝ
- View Model ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ณ ๋ฐ์ธ๋ฉ๋ ๋ค๋ฅธ View๋ ๋ณ๊ฒฝ
MVVM Pattern ์ ๋ฆฌ
โ MVC ํจํด์์ Controller๋ฅผ ์ ์ธํ๊ณ View model์ ๋ฃ์ ํจํด
โ ๋
๋ฆฝ์ฑ ์ฆ๊ฐ, ์ ์ ์์กด์ฑ
โ View ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด View Model์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๊ณ ์ฐ๊ด๋ ๋ค๋ฅธ View๋ ๋ณ๊ฒฝ๋๋ค.
Vue Instacne
- new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ์์ฑ์ ํจ์ ํธ์ถ
<body>
<script>
// 1. Vue instance constructor
const vm = new Vue();
console.log(vm);
</script>
</body>
์์ฑ์ ํจ์
โ JS์์ ๊ฐ์ฒด ์์ฑ - ํ๋์ ๊ฐ์ฒด๋ฅผ ์ ์ธํ์ฌ ์์ฑ
const member = {
name: "Sunjun",
age: 22,
sId: 2022311491,
};
โ ๋์ผํ ๊ตฌ์กฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋ค๊ณ ์ถ๋ค๋ฉด?
function Member(name, age, sId) {
this.name = name;
this.age = age;
this.sId = sId;
}
const member3 = new Member("David", 21, 2022654321);
โ ํจ์ ์ด๋ฆ์ ๋ฐ๋์ ๋๋ฌธ์๋ก ์์
โ ์์ฑ์ ํจ์๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฐ๋์ new
์ฐ์ฐ์๋ฅผ
el(element)
<body>
<div id="app">ใ</div>
...
</body>
const app = new Vue({
el: "#app",
});
โ Vue instance์ DOM์ mount(์ฐ๊ฒฐ)ํ๋ ์ต์
- view์ model์ ์ฐ๊ฒฐํ๋ ์ญํ
- HTML id ํน์ class์ ์ฐ๊ฒฐ
โ Vue instance์ ์ฐ๊ฒฐ๋์ง ์์ DOM ์ธ๋ถ๋ Vue์ ์ํฅ์ ๋ฐ์ง ์์
data
โ Vue instance์ ๋ฐ์ดํฐ ๊ฐ์ฒด ํน์ ์ธ์คํด์ค ์์ฑ
โ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ ๋ฐ๋์ ๊ธฐ๋ณธ ๊ฐ์ฒด {}(object)์ด์ด์ผ ํ๋ค.
โ ๊ฐ์ฒด ๋ด๋ถ์ ์์ดํ
๋ค์ value๋ก ๋ชจ๋ ํ์
์ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ์ ์๋ค.
โ ์ ์๋ ์์ฑ์ {{ }}
์ ํตํด view์ ๋ ๋๋ง ๊ฐ๋ฅ
const app = new Vue({
el: "#app",
data: {
message: "Hello, Vue!",
},
});
โ ์ถ๊ฐ๋ ๊ฐ์ฒด์ ๊ฐ ๊ฐ๋ค์ this.message
ํํ๋ก ์ ๊ทผ ๊ฐ๋ฅ
methods
const app = new Vue({
el: "#app",
data: {
message: "Hello, Vue!",
},
methods: {
print: function () {
console.log(this.message);
},
},
});
โ Vue instance์ method๋ค์ ์ ์ํ๋ ๊ณณ
โ ๊ฐ์ฒด ๋ด print method ์ ์
- Vue instance์ data๋ด message ์ถ๋ ฅ
app.print()
const app = new Vue({
el: "#app",
data: {
message: "Hello, Vue!",
},
methods: {
...
bye: function () {
this.message = "Bye, Vue!";
},
},
});
โ method๋ฅผ ํธ์ถํ์ฌ data ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ๊ฐ์ฒด ๋ด bye method ์ ์
- print method ์คํ ์ Vue instance์ data๋ด message ๋ณ๊ฒฝ
โ ์ฝ์์ฐฝ์์ app.bye() ์คํ
- DOM์ ๋ฐ๋ก ๋ณ๊ฒฝ๋ ๊ฒฐ๊ณผ ๋ฐ์
- Vue์ ๊ฐ๋ ฅํ ๋ฐ์์ฑ(reactivity)
'โญ Personal_Study > Vue' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
SFC (Single File Component) (0) | 2022.11.11 |
---|---|
Vue_CLI (0) | 2022.11.09 |
Vue: advanced attributes (0) | 2022.11.07 |
Vue: Basic Syntax (0) | 2022.11.07 |
Vue Intro (0) | 2022.11.06 |
๋๊ธ