-インタラクティブなインターフェイス
-JavaScriptフレームワーク
-軽量、他のライブラリに依存しない
-ブラウザIE8以下は対応しない
object data/method interface MVVM
CDN :https://cdnjs.com/libraries/vue
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.1.0/vue.common.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue.js</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="styles.css">
<style>
</style>
</head>
<body>
<div id="mycounter">
<div v-text="count"></div>
<button v-on="click: countUp">Up</button>
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.11.4/vue.min.js"></script>
<script>
// object data/method interface MVVM
// counter
var vm = new Vue({
el: '#mycounter',
data: {
count: 0
},
methods: {
countUp: function(){
this.count++;
}
}
});
</script>
</body>
</html>
mustatch, v-html
<div>{{'content: ' + content}}</div>
<div v-html="content"></div>
表示非表示
var vm = new Vue({
el: '#myapp',
data: {
content: 'helloworld',
myStyle: 'red'
showContent: true
}
});
v-repeat
<div id="myapp">
<ul>
<li v-repeat="d1">{{$value}}</li>
</ul>
<ul>
<li v-repeat="d2">{{$key}} - {{$value}}</li>
</ul>
<ul>
<li v-repeat="d3">{{name}} - {{score}}</li>
</ul>
</div>
<p>
<input type="text" v-model="name">
{{name}}
</p>
フィルター
<div v-text="msg | uppercase"></div>
<div v-text="msg | capitalize"></div>
<div>{{$data | json}}</div>
<div id="myapp">
<li v-repeat="users | filterBy 't' in 'name'">
<li v-repeat="users | filterBy | orderBy 'name' -1">
{{name}} - {{score}}
</div>
computed property
<div id="myapp">
side: <input type="text" v-model="side">
area: {{area}}
</div>
<script src="http://cdnjs.cloudflare.com/ajax/libs/vue/0.11.4/vue.min.js"></script>
<script>
var vm = new Vue({
el: '#myapp',
data: {
side: 20
},
computed: {
area: function(){
return this.side * this.side;
}
}
});
</script>