Vue.js(2) vue μΈμ€ν΄μ€ λ° ν νλ¦Ώ λ¬Έλ²
Vue Instance
- Vue.js νλ©΄ κ°λ°μ μν΄ κΌ μμ±ν΄μΌ νλ νμ λ¨μμ΄λ€.Instance μμ±
// μλ‘κ² Vueλ₯Ό μ μΈ new Vue({ el: '#app', // μ΄λ€ μμμ μ μ©μ ν μ§ μ ν¨ μ¬κΈ°μλ HTML μ½λμ μ μΈλ id="app"μΈ div νκ·Έλ₯Ό μ§μ data: { // data λ ν΄λΉ VueJSμμ μ¬μ©ν μ 보λ€μ μ μΈν΄μ£Όλ μν title: 'μλ VueJS!' } })
μΈμ€ν΄μ€ μ¬μ©ν μ μλ μμ±κ³Ό API
new Vue({
el: , // μΈμ€ν΄μ€κ° κ·Έλ €μ§λ νλ©΄μ μμμ (νΉμ HTMLνκ·Έ)
template: , // νλ©΄μ νμν μμ (HTML, CSS λ±)
data: , // λ·°μ λ°μμ±(Reactivity) κ° λ°μλ λ°μ΄ν° μμ±
methods: , // νλ©΄μ λμκ³Ό μ΄λ²€νΈ λ‘μ§μ μ μ΄νλ λ©μλ
created: , // λ·°μ λΌμ΄ν μ¬μ΄ν΄κ³Ό κ΄λ ¨λ μμ±
watch: , // data μμ μ μν μμ±μ΄ λ³ννμ λ μΆκ° λμμ μνν μ μκ² μ μ
});
Vue λΌμ΄ν μ¬μ΄ν΄
Vue μΈμ€ν΄μ€ μμ±μ μμ΄, κ°μ₯ λ¨Όμ νΈμΆλλ ν¨μλ€λ‘μ¨, μ€ν¬λ¦½νΈμμλ window.onload μ λΉμ·ν λλμ΄λ€.
Vue μΈμ€ν΄μ€λ μμ±(Create) λκ³
Dom μ λΆμ°©(Mount) λκ³
μ
λ°μ΄νΈ (Update) λλ©°
μμ΄μ§λ (Destroy) 4κ°μ§ κ³Όμ μ κ±°μΉκ² λλ€.

created
data λ₯Ό λ°μνμΌλ‘ μΆμ ν μ μκ²λλ©°computed,method,watchλ±μ΄ νμ±νλμ΄ μ κ·Όμ΄ κ°λ₯νκ² λλ€.
μμ§ Domμλ μΆκ°λμ§ μμ μνμ΄λ€.
var app = new Vue({
el: '#app',
data() {
return {
msg: 'hello';
}
},
created(function() {
console.log(this.msg); // hello
})
})
mounted
κ°μ₯ λ§μ΄ μ¬μ©νλ mounted ν
μ΄λ€.
κ°μ Dom λ΄μ©μ΄ μ€μ Dom μ λΆμ°©λκ³ λ μ΄νμ μ€νλλ€.data,computed,method,watch λ± λͺ¨λ μμμ μ κ·Όμ΄ κ°λ₯νλ€.
var app = new Vue({
el: '#app',
mounted(function() {
console.log('mounted');
})
})
createdλ λ°μ΄ν° μ΄κΈ°νμ λν λͺ©μ , mountedλ DOM μ‘°μμ λν λͺ©μ μΌλ‘ μ¬μ©ν μ μλ€.
ν νλ¦Ώ λ¬Έλ²
λ·°λ₯Ό νλ©΄μ μ‘°μνλ λ°©λ²μ μλ―Ένλ€.
λ°μ΄ν° λ°μΈλ© : interporation {{ }}
<span>λ©μμ§: {{ msg }}</span>- Mustache Tag(μ΄μ€μ€κ΄νΈ) λ₯Ό μ¬μ©ν 보κ°λ²(Interporation)
- Mustaches λ HTMLμ΄ μλ μΌλ°ν μ€νΈλ‘ ν΄μ νλ€.
λλ ν°λΈ : Directive v-bind
v-bind λλ ν°λΈλ₯Ό μ¬μ©νμ¬ Vue μΈμ€ν΄μ€ λ΄μ μ μΈλ κ°μ HTML μ½λμ μμ± κ°μ μ¬μ©ν μ μλ€.v- μ λμ¬κ° λΆμ νΉλ³ν μμ±μΌλ‘ νλ©΄μ DOM μ‘°μμ μ½κ² ν μ μλ λ¬Έλ²μ μ 곡νλ€.
v-html HTMLμ μ½λννλ‘ μΆλ ₯ κ°λ₯νλ€.
v-onceλ HTML μ½λλ‘ μΆλ ₯λ μ΄ν μ΄λ€ νμ²λ¦¬κ° μμ΄λ μ²μμ μΆλ ₯ν κ°μ μ μ§μν€κ³ μΆμλ μ¬μ©νλ€.v-onμ μ΄λ²€νΈ 리μ€λ μ΄λ€.- μ΄λ²€νΈ μμμ΄
- μμμ΄λ μ μΌλ‘ νμλλ νΉμ μ λ―Έμ¬λ‘, λλ ν°λΈλ₯Ό νΉλ³ν λ°©λ²μΌλ‘ λ°μΈλ© ν΄μΌ ν¨μ λνλΈλ€. μλ₯Ό λ€μ΄, .prevent μμμ΄λ νΈλ¦¬κ±°λ μ΄λ²€νΈμμ event.preventDefault()λ₯Ό νΈμΆνλλ‘ v-on λλ ν°λΈμκ² μλ €μ€λ€.
<form v-on:submit.prevent="onSubmit"> ... </form>
- μμμ΄λ μ μΌλ‘ νμλλ νΉμ μ λ―Έμ¬λ‘, λλ ν°λΈλ₯Ό νΉλ³ν λ°©λ²μΌλ‘ λ°μΈλ© ν΄μΌ ν¨μ λνλΈλ€. μλ₯Ό λ€μ΄, .prevent μμμ΄λ νΈλ¦¬κ±°λ μ΄λ²€νΈμμ event.preventDefault()λ₯Ό νΈμΆνλλ‘ v-on λλ ν°λΈμκ² μλ €μ€λ€.
- μ΄λ²€νΈ μμμ΄
v-modelμ<form>νκ·Έμμ submit ν λ μ¬μ©νλ μμ±
μ½μ΄
λλ ν°λΈλ₯Ό μ€μ¬μ μ¬μ©νλ λ°©λ²μ΄ μλ€v-bind μ v-on μ μ 곡λλ€.
- v-bind
<!-- μ 체 λ¬Έλ² --> <a v-bind:href="url"> ... </a> <!-- μ½μ΄ --> <a :href="url"> ... </a>- v-on
<a v-on:click="doSomething"> ... </a> <!-- μ½μ΄ --> <a @click="doSomething"> ... </a>
μ°Έκ³
