Vue.js
Vue는 사용자 인터페이스를 만들기 위한 진보적인 프레임워크이다. 다른 단일형 프레임워크와 달리 Vue는 점진적으로 채택할 수 있도록 설계했다. 핵심 라이브러리는 뷰 레이어만 초점을 맞추어 다른 라이브러리나 기존 프로젝트와의 통합이 매우 쉽다. Vue는 현대적 도구 및 지원하는 라이브러리(Axios 등)와 함께 사용한다면 정교한 SPA를 완벽하게 만들 수 있다.
Vue.js 추가
- Dev
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
- Prod
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.0"></script>
프로덕션 환경에서는 버전명을 명시하는 것으로, 새로운 버전에서 발생할 수 있는 예상치 못한 오류를 방지하는 것이 좋다.
프로덕션용은 개발용에 비해 최소화, 최적화가 진행되어 있으므로 앱 성능을 높일 수 있다.
선언적 렌더링
Vue.js의 핵심은 간단한 템플릿 구문을 사용해 선언적으로 DOM에 데이터를 렌더링 하는 것이다.
<div id="app">
{{ message }}
</div>
var app = new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
});
new Vue() 구문을 통해 새로운 Vue 인스턴스를 생성했으며, 데이터와 문자열 템플릿을 매핑하여 렌더링 할 수 있게 구현했다. 상기 내용에서 app 인스턴스에 message 값을 변경하는 것으로 뷰 내용까지 한 번에 수정할 수 있다.
app.message = 'Bye Vue!';
엘레멘트 속성 바인딩
<div id="app-2">
<span v-bind:title="message">
내 위에 잠시 마우스를 올리면 동적으로 바인딩된 title을 볼 수 있습니다!
</span>
</div>
var app2 = new Vue({
el: '#app-2',
data: {
message: '이 페이지는 ' + new Date() + ' 에 로드 되었습니다'
}
});
조건문과 반복문
엘레먼트의 존재 여부 토글은 v-if 디렉티브를 통해 가능하다.
<div id="app-3">
<p v-if="seen">던질까말까던질까말까</p>
</div>
var app3 = new Vue({
el: '#app-3',
data: {
seen: true
}
});
List 형식의 데이터를 반복적인 엘레멘트로 표현하고자 할때는 v-for 디렉티브를 통해 표현할 수 있다.
<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: 'todo list 1'},
{ text: 'todo list 2'},
{ text: 'todo list 3'}
]
}
});
위와 같은 경우에 새로운 데이터는 app4.todos.push({ text: ‘New item’}) 의 방식으로 입력할 수 있다.
사용자 입력 핸들링
사용자 입력에 대한 이벤트 발생은 v-on 디렉티브를 통해 제어할 수 있다.
<div id="app-5">
<p>{{ message }}</p>
<button v-on:click="reverseMessage">메시지 뒤집기</div>
</div>
var app5 = new Vue({
el: '#app-5',
data: {
message: 'Hello! Vue.js!'
},
method: {
reverseMessage: function() {
this.message = this.message.split(''),reverse().join('')
}
}
});