Vue.js 入門 vol.1
参考サイト
https://jp.vuejs.org/v2/guide/
Vue のチュートリアル
- vueの基本機能をみてみる。
<!-- ここでvueを読み込むする --> <script src="https://unpkg.com/vue"></script> <!-- ここのappは、vue のselector? --> <div id="app"> <!-- {{ }} でcontextの、messageを表示できる --> {{ message }} </div>
var app = new Vue({ el: '#app', // elで #app は、id=app で指定ができるという意味かな? data: { message: 'Hello Vue!' // message } })
- 次に、ディレクティブと言われる機能を使ってみる。
<script src="https://unpkg.com/vue"></script> <div id="app-2"> <!-- v-bindは、この要素の title 属性を Vue インスタンスの message プロパティによって更新して保存する という意味 --> <span v-bind:title="message"> Hover your mouse over me for a few seconds to see my dynamically bound title! </span> </div>
var app2 = new Vue({ el: '#app-2', data: { message: 'You loaded this page on ' + new Date() } })
- ちなみに、app2 のmessageは、
app2.message = "test"
というように、上書きできる。
var app2 = new Vue({ el: '#app-2', data: { message: 'You loaded this page on ' + new Date() } }) app2.message = "test" //この場合、v-bind:title="message"で表示されるのは、"test"に上書きされる
- if文を使ってみる。
<div id="app-3"> <p v-if="seen">Now you see me</p> </div>
var app3 = new Vue({ el: '#app-3', data: { seen: true } }) // app3.seen = false とすると、文章は消える
- 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: 'Learn Javas'}, { text: 'Learn Vue'}, { text: 'Build something'} ] } })
- ユーザー入力の制御。v-onディレクティブを使ってみる。
<div id="app-5"> <p>{{ message }}</p> <!-- v-onディレクティブを使って clickした時に実行する メソッドを呼び出す --> <button v-on:click="reverseMessage">Reverse Message</button> </div>
var app5 = new Vue({ el: '#app-5', data: { message: 'Hello Vue.js!' }, methods: { //methodsで、実行する reverseMessage: function () { this.message = this.message.split('').reverse().join('') } } })
- v-modelを使ってみる。
<div id="app-6"> <p>{{ message }}</p> <input v-model="message"> </div>
var app6 = new Vue({ el: '#app-6', data: { message: 'Hello Vue!' //messageの初期値 } })
Component
- Componentを登録してみる。htmlの方は、呼び出すときのコード
// todo-item と呼ばれる新しいコンポーネントを定義 Vue.component('todo-item', { template: '<li>This is a todo</li>' })
<ol> <!-- todos 配列にある各 todo に対して todo-item コンポーネントのインスタンスを作成する --> <todo-item></todo-item> </ol>
- componentを利用して、todo listを作成してみる。
Vue.component('todo-item', { //<todo-item> selector props: ['todo'], // todo というプロパティを設定 template: '<li>{{ todo.text }}</li>' //todoプロパティのtext属性?を取り出す }) var app7 = new Vue({ el: '#app-7', // id=app-7 data: { groceryList: [ { id: 0, text: 'Vegetables' }, { id: 1, text: 'Cheese' }, { id: 2, text: 'Whatever else humans are supposed to eat' } ] } })
<div id="app-7"> <ol> <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item> </ol> </div> * v-for="item in groceryList"で、itemを1つずつ取り出す。 * 取り出したitemオブジェクトを、v-bindで、todo-itemコンポーネントの、todoプロパティに渡す。 * todo-itemは、templateを返して、表示する。 * どうもこれは、v-for と、v-bindの順番を逆にしても動作するぽい。
まとめ
- 文法もあんまり難しくなさそうだし、めっちゃよさそう!