Vue 2 를 기준으로 작성되었습니다.
<template>
<!-- HTML -->
<div>
<p>Hello :)</p>
</div>
</template>
<script>
// JavaScript
</script>
<style>
/* CSS */
p {
color: black;
}
</style>
<body>
<div id="app">
<p id="name">name : </p>
<input id="inputName" type="text">
</div>
<script>
// 1. input tag 선택
const input = document.querySelector('#inputName')
// 2. p tag 선택
const name = document.querySelector('#name')
// 3. addEventListener 추가
input.addEventListener('input', function(evnet){
name.innerText = name.innerText + event.target.value
})
</script>
</body>
el, data
설정{{}}
<body>
<div id="app">
<p id="name">name : {{ message }}</p>
<input id="inputName" type="text" v-model="message">
</div>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
// CODE HERE
const app = new Vue({
el: '#app',
data: {
message: '',
}
})
</script>
</body>
View
- 우리 눈에 보이는 부분 = DOMModel
- 실제 데이터 = JSONView Model
(Vue)new
연산자를 사용한 생성자 함수 호출<!-- Vue CDN -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
const vm = new Vue()
console.log(vm)
</script>
el
(element)Object
연결#app
작성 = DOM 연결const app = new Vue({
el: '#app'
})
console.log(app)
{{ message }}
작성message
속성이 정의되지 않았다는 경고와 {{ message }}
가 그대로 출력되는 차이<div id="app">
<p>{{ message }}</p> // 경고 출력
</div>
<div>
<p>{{ message }}</p> // 그대로 출력
</div>
<script>
const app = new Vue({
el: '#app',
})
console.log(app)
</script>
데이터 객체
혹은 인스턴스 속성
{ } (Object)
여야 함interpolation {{ }}
을 통해 view에 렌더링 가능함data
객체 추가message
값 추가this.message
형태로 접근 가능<div id="app">
<p>{{ message }}</p>
</div>
<!-- Vue CDN -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'Hellow, Vue !',
},
})
console.log(app)
</script>
method
들을 정의하는 곳methods
객체 정의<div id="app">
<p>{{ message }}</p>
</div>
<!-- Vue CDN -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'Hellow, Vue !',
},
methods: {
print: function() {
console.log(this.message)
},
}
})
</script>
app.print()
실행<div id="app">
<p>{{ message }}</p>
</div>
<!-- Vue CDN -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>
const app = new Vue({
el: '#app',
data: {
message: 'Hellow, Vue !',
},
methods: {
print: function() {
console.log(this.message)
},
bye: function () {
this.message = 'Bye, Vue !'
}
}
})
</script>
app.bye()
실행