ใ rrrrrrrrrrrrr......๋์๋ณด๋ ํ๋ก ํธ์๋ ๊ตฌ๋ฅ vue๋ก ์ก์๋ฒ๋ ธ๋น
์ฝ๋ค๊ทธ๋์ ์ ํํ ํ๋ ์์์ด๊ฑฐ๋.. ํ๋ก ํธ ๋๋ ์ด๋ ต๋น
์ผ๋จ ํด๋๊ตฌ์กฐ๋ถํฐ ์๋ก ๊ตฌ์ฑํ๋๋ฐ ๊ทธ๋ฅ ๊ฒ์ํด์ ์ ์ผ ์ธ๋ จ๋๋ค๊ณ ํ๊ฐ๋ฐ๋ ๊ทธ ํด๋๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ์ฐจ์ฉํ๋ค.
kr.vuejs.org/v2/guide/index.html
์ ํ์ด์ง๋ฅผ ์ค์ ์ ์ผ๋ก ๋ณด๊ธฐ ์์ํ๋ค.
์ผ๋จ vue ๋ angular์ ๋ง์ฐฌ๊ฐ์ง๋ก data binding์ด ๊ธฐ๋ณธ์ ์ธ๊ฑฐ ๊ฐ๋ค.
data binding์ ์ฝ๊ฒ ๋งํด ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ฐ๋๋ฉด ์์์ ๋ฐ๋๊ฐ์ผ๋ก ํ์ํด์ฃผ๋ ๊ฑธ ๋งํ๋ค.
1. ์ธ์คํด์ค ์์ฑ
// Vue์ธ์คํด์ค์ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํฉ๋๋ค.
var vm = new Vue({
data: data
})
// ์ธ์คํด์ค์ ์๋ ์์ฑ์
// ์๋ณธ ๋ฐ์ดํฐ์ ์๋ ๊ฐ์ ๋ฐํํฉ๋๋ค.
vm.a === data.a // => true
// ์ธ์คํด์ค์ ์๋ ์์ฑ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด
// ์๋ณธ ๋ฐ์ดํฐ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
vm.a = 2
data.a // => 2
// ... ๋ฐ๋๋ก ๋ง์ฐฌ๊ฐ์ง์
๋๋ค.
data.a = 3
vm.a // => 3
vue ์ธ์คํด์ค๊ฐ ์ ์ธ๋์ ๋ ํฌํจ๋์ด์๋ data๋ง ์ ๋ ๊ฒ ๋ฐ์ํ์ผ๋ก binding๋๊ณ ,
vm.b = 1 ์ด๋ฐ์์ผ๋ก ๊ฐ์๊ธฐ ์ ์ธํด๋ฒ๋ฆฌ๋ฉด ํ๋ฉด์ ํ์๋์ง ์๋๋ค.
์๋ก ์ค์ ๋ ๊ฐ์ ์ด๊ธฐํํด์ ์ค์ ํด์ฃผ๊ณ ์ฐ๋ฉด ๋๋ค๋๋ฐ ์ฌ์ค ์ด๊ฑด ์ํฉ์ ๋ฅ์ณ๋ด์ผ ์๊ฒ๊ฐ๋ค.
data: {
newTodoText: '',
visitCount: 0,
hideCompletedTodos: false,
todos: [],
error: null
}
์ด๋ฐ์์ด๋ผ๋๋ฐ ์์ง์ ์ฝ๋ ๋ด๋ ๋ญ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
2. Object.freeze()
var obj = {
foo: 'bar'
}
Object.freeze(obj)
new Vue({
el: '#app',
data: obj
})
์ด๋ฐ์์ผ๋ก ์ฐ๋ฉด ๋์ด์ foo์ ๊ฐ์ ๋ณํ์ง ์๋๋ค.
<div id="app">
<p>{{ foo }}</p>
<!-- obj.foo๋ ๋์ด์ ๋ณํ์ง ์์ต๋๋ค! -->
<button v-on:click="foo = 'baz'">Change it</button>
</div>
3. Vue ์ธ์คํด์ค ์์ฑ ๋ฐ ๋ฉ์๋
var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})
vm.$data === data // => true
vm.$el === document.getElementById('example') // => true
// $watch ๋ ์ธ์คํด์ค ๋ฉ์๋ ์
๋๋ค.
vm.$watch('a', function (newVal, oldVal) {
// `vm.a`๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํธ์ถ ๋ฉ๋๋ค.
})
์ฐธ๊ณ ) vue ์ธ์คํด์ค์ ๋ผ์ดํ ์ฌ์ดํด ๋ค์ด์ด๊ทธ๋จ์ด๋ค.
dom ์ด๋ผ๋ ๊ฐ๋ ์ ํ์ด์ง์ ๋ก๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์์ ๊ณต๊ฐ์ฏค์ผ๋ก ์ดํดํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
๋ผ์ดํ ์ฌ์ดํด ํ๋ํ๋ ์ ํ์๋ ์๊ฒ ์ง๋ง, ๋ค๋ฅธ ๋ค๋น๊ฒ์ดํฐ๋ก ๋์ด๊ฐ๋ฉด ์์์ ์ธ์คํด์ค ๋ค์ด ์์ฑ, dom์ ๋, ํ๊ดด ์ด๋ ๊ฒ ์ผ์ด๋๋ ํ๋ฆ๋ง ์ดํดํ๋ ์ ๋๋ฉด ๋ ๊ฒ ๊ฐ๋ค.