Vue.jsを始めました

Vue.jsとは
Vue.jsは最近注目されているJavaScriptフレームワーク。シンプルさがうりである。
Vue.js
Angular.jsを勉強していたが、なかなか物が作れるようにならなくて少し飽きてきたところにで、Vue.jsを見つけて飛びついたという流れ。他のフレームワークとの比較は、以下の記事がわかりやすかった。
Backbone.JSからAngular2まで、全9大JavaScriptフレームワークを書き比べた!
Vue.jsをはじめる
Vue.jsをはじめるには、本家のガイドを読むのが一番いいと思った。
Vue.js はじめに
日本語の情報がそろっており、分かりやすい。日本語のドキュメントがあるだけで印象良し!ここが英語のサイトだと、学習するのに時間がかかってしまう。
基本的な使い方のまとめ
Vue.jsのガイドを順に読んで見て、使い方がわかってきた。ただ、ちょっと文章が多すぎて、初めの方にやったことを忘れてしまった。ここで、自分なりにまとめてみようと思う(ドキュメントを読んだ人向け)。
基本形
<!DOCTYPE html>
<html>
  <head>
    <title>Vue hello world.</title>
    <meta charset="utf-8" />
    <script src="https://unpkg.com/vue"></script>
  </head>
  <body>
    <div id="app">
      {{ message }}
    </div>
    <script type="text/javascript">
      var app = new Vue({
        el: '#app',
        data: {
          message: 'Hello Vue!'
        },
        methods: {
          hoge: function() {
            foo1();
          }
        },
        computed: {
          hoge: function() {
            foo2();
          }
        },
        watch: {
          hoge: function() {
            foo3();
          }
        },
      })
    </script>
  </body>
</html>
ディレクティブ
HTMLの属性に紐づけて、HTMLを操作できる。
参考:API ディレクティブ
| ディレクティブ | 役割 | 
|---|---|
| v-text | HTMLタグに値を設定する | 
| v-bind | HTMLタグの属性値を設定する | 
| v-if,v-else,v-elseif | 条件によって描写する | 
| v-for | 条件によって繰り返し描写する | 
| v-on | イベントがあるとメソッドを呼び出す | 
| v-model | 値を保持し、入力と出力で利用する | 
プロパティ
Vueオブジェクトに設定できるオプション。
参考:API オプション
| プロパティ | 役割 | 
|---|---|
| el | どの要素と紐づけるか? | 
| template | HTMLテンプレートを設定する | 
| data | データを保持する | 
| methods | メソッドを格納する | 
| computed | 値を算出するメソッド | 
| watch | データの変更を監視して反応するメソッド | 
コンポーネント
自分でHTMLタグを作成できる。
<div id="example">
  <my-component></my-component>
</div>
// 登録する
Vue.component('my-component', {
  template: '<div>A custom component!</div>'
})
// root インスタンスを作成する
new Vue({
  el: '#example'
})
ルーティング
ルーティングは、vue-router 2を使うみたい。こちらも日本語ドキュメントあり。ありがたい!
ガイドを終えて
一通りルーティングまで分かるようになったので、次はSPAの画面を作ってみたい。バックエンドはSeverless frameworkを使って、AWSのAPI Gateway+Lambdaで。これに認証機能をつければ、Webアプリケーションができる。
投稿日 2017年05月21日