Vue.js
DB CAFE
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
목차
1 Vue.js 개요[편집]
- UI를 빠르게 개발하기 위해서 만들어진 자바스크립트 프레임워크.
- MVVM(Model-View-ViewModel) 패턴을 따르며, 어플리케이션로직과 UI 분리 설계
- vue.js 사이트 : https://kr.vuejs.org/
2 Vue.js 장점[편집]
- 다른 프레임워크와는 달리 유연하고 가벼움
- angular.js와는 달리 전체 아키텍처를 새롭게 구성할 필요가 없고 기존의 웹 어플리케이션의 일부 UI만 적용하는것도 가능
- SPA(Single Page Application:단일 페이지 어플리케이션) 구성을 위해 필요한 라우터기능 지원
- 가상 DOM을 지원하여 빠른 UI렌더링이 가능
- vue.js와 다른 프레임워크의 차이점 비교 => https://kr.vuejs.org/v2/guide/comparison.html
- React와 Angular 의 장점을 가진 프레임워크가 Vue
- Vue는 Angular의 양방향 데이터 바인딩과, React의 단방향 데이터 흐름의 장점을 모두 결합한 프레임워크
- 양방향 데이터 바인딩 이란? 화면에 표시되는 값과 프레임워크의 모델 데이터 값이 동기화 되어 한쪽이 변경되면 다른 한쪽도 자동으로 변경되는 것을 말한다.
- 단방향 데이터 바인딩이란? 컴포넌트 단방향 통신을 의미하는데 컴포넌트 간 데이터를 전달할 때 항상 상위컴포넌트에서 하위컴포넌트 방향으로 전달하게끔 구조화 되어 있는것을 의미한다.
3 예제 Hello World![편집]
- Vue JS 라이브러리를 다운로드 해도 되지만, 간단하게 테스트하기 위해 CDN 선언
- Vue 인스턴스를 하나 생성하여 간단한 Vue App 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="https://unpkg.com/vue@2.3.3"></script>
</head>
<body>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello World!'
}
})
</script>
<div id="app">
{{ message }}
</div>
</body>
</html>
</source/>
<source lang=html>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script src="https://unpkg.com/vue@2.3.3"></script>
</head>
<body>
<div id="app">
<h2>{{message}}</h2>
</div>
<script>
var model = {
message : "Hello Vue.js~"
}
var _app = new Vue({
el : "#app",
data : model
})
</script>
</body>
</html>
- 콘솔에서 직접 변수의 값을 변경해 볼 수도 있음.
- data 옵션은 vue 인스턴스가 관찰하는 데이터 객체를 의미 , 변경사항이 즉시 감지되어 반영
<h2>{{message}}</h2>
대신
<h2 v-text="message"></h2>
를 사용해도 된다.
<input type="text" v-bind:value="message"></h2>
3.1 양방향 바인딩 v-model 디렉티브 예제[편집]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://unpkg.com/vue@2.3.3"></script>
</head>
<body>
<div id="selectBox">
<div> 좋아하는 언어를 선택해보자 </div>
<input type="checkbox" value="java" v-model="lang">자바
<input type="checkbox" value="C" v-model="lang">C
<input type="checkbox" value="C#" v-model="lang">C#
</div>
<div id="selectedLang">
선택한 언어 ::
<span v-html="lang"></lang>
</div>
<script>
var model = {
lang : []
};
var selectBox = new Vue({
el : '#selectBox' , data:model
});
var selectedLang = new Vue({
el : '#selectedLang' , data:model
});
</script>
</body>
</html>
- 하나의 model 객체를 두개의 vue 인스턴스에서 참조하며 selectBox에서 바인딩하는 뷰 객체가 v-model을 사용해 양방향데이터 바인딩을 하여 model 객체의 lang이라는 배열에 값을 바로 변경하는 것.
3.2 v-if 디렉티브 예제[편집]
- v-if는 조건에 부합될때에만 렌더링 화면이 자주 변경되는 부분에 대해서는 v-if보다는 v-show를 쓰는게 더 바람직
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://unpkg.com/vue@2.3.3"></script>
</head>
<body>
<div id="account">
<input type="text" v-model="amount">
<h2 v-if="amount<0" > 마이너스</h2>
<h2 v-else-if="amount>0" > 플러스</h2>
<h2 v-else="amount>0" >문자 혹은0</h2>
</div>
<script>
var simple1 = new Vue({
el : "#account",
data : {
amount : 0
}
});
</script>
</body>
</html>
3.3 반복적인 데이터 표현을 위한 v-for 디렉티브 예제[편집]
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://unpkg.com/vue@2.3.3"></script>
</head>
<body>
<div id="list">
<ul v-for="item in items">
<li>{{item.no}}</li>
<li>{{item.nm}}</li>
</ul>
</div>
<script>
var model = {
"items" : [
{ "no" : 1 , "nm" : "아이템1"},
{"no" : 2 , "nm" : "아이템2"},
{"no" : 3 , "nm" : "아이템3"}
]
};
var List = new Vue({
el : "#list",
data : model
});
</script>
</body>
</html>
3.4 인덱스 예제[편집]
<div id="list">
<ul v-for="(item,index) in items">
<li>{{index}}</li>
<li>{{item.no}}</li>
<li>{{item.nm}}</li>
</ul>
</div>