こんにちは!TakahiRoyteです。今回は前回の予告通り、早速コーディングを開始していきますが、その前に!開発環境を揃える必要があります。開発環境構築と聞いて身構えました?安心してください。エディタとブラウザさえ用意すればもう始められます!
推奨エディタとブラウザはコレ
本連載ではエディタにVisual Studio Code、ブラウザにChromeを用いて解説していきます。VSCodeはMicrosoftが無料のOSSとして出しているエディタで、2016年にバージョン1がリリースされました。AtomやSublime Textなどの他の有名なエディタに引けを取らない高機能と、はじめから日本語化されているなどの導入ハードルの低さからVSCodeを推奨エディタとします。
ブラウザはChrome推奨です。理由はVue.jsの開発ツール拡張機能がChrome向けにリリースされているというポイントがあります。後はシェアがNo.1だったり、デバッグツールが使いやすかったり、新しい標準に対応するのが早かったりと色々優れている点は多いです。
ちなみに両ツールに共通して、クロスプラットフォームですのでOSは問いません。
もし上記以外でお気に入りのエディタやIDEがあればそちらを使っていただいても構いません。
コーディング
今回のコーディングでは下記を実際に試していきます。
- データバインディング
- リスト
- メソッド
どんなに大きなアプリケーションでもこの基本の3つを利用します。これをいかに組み合わせていくかが鍵となっているので、早速マスターしていきましょう。
データバインディング
以下の通りの構成でファイルを作成してください。
app |---index.html |---app.js
ファイルが作成できたらサンプルコードを見ながら同じように実装してみてください。
注目するべきポイントは、HTMLファイルには直接Hello Vue.js!
という文字が無いのにも関わらず画面下の結果には文字が表示されている点です。Hello Vue.js!
はHTMLではなくJS上にデータとして存在します。このJS上のデータとHTMLを結びつけるのがデータバインディングなのです。
ソースについて順を追って説明します。
まずVue.jsは外部ライブラリなので読み込む必要があります。読み込みをしているのがHTMLの最下段から一つ上にあるscript
タグで囲まれているURLを指定している行です。
このURLはContent Delivery Network (CDN)といって、負荷分散のために外部サイトがライブラリを保管&公開してくれているのを利用しています。とりあえずは「インターネットからvue.js
をダウンロードしてきている」という認識があればOKです。
その下の一行は、index.html
と同じディレクトリに作成してもらったapp.js
を読み込むための相対パス指定のscript
タグです。
次に1行目のid="app"
という部分です。これはapp.js
側と絡んでくるのですが、Vue.jsはライブラリが適用される範囲をID指定により設定します。app.js
ではnew Vue()
の中でプロパティとしてel
を持っています。これはnew Vue()
で作った新しいVueインスタンスとHTMLのどこを結びつけるかを指定するためのものです。試しにHTML側でもJS側でもどちらでも良いのでapp
という単語を変えてみてください。表示が崩れるのが確認できるかと思います。
次にHTMLに記載されている{{ message }}
という部分ですが、ここは表示結果にはHello Vue.js!
となって表示されています。勘の良い方はもう気付いているかもしれませんが、これはJS側のdata
のmessage
と紐付いているのです。{{}}
はマスタッシュ記法と言い、el
で指定された範囲内の{{}}
はJS式として演算が行われます。演算が行われるというのは、単にデータと紐付けるだけではありません。{{ message }}
を{{ 1 + 2 }}
に変えて是非その便利さを実感してください。
驚くべきなのはこれだけに留まりません。データの変更はリアルタイムで反映されるのです。前回紹介したデモをもう一度見てみましょう。
今度はname
という変数がJSのdata
と{{}}
内の他に、input
タグのv-model
という属性にも記載されているのが分かるかと思います。v-model
属性での指定により、input
タグ内のデータはJSのdata
と紐付きます。そしてdata
の変更は即{{}}
へ反映されるのです。
リスト
次はWebアプリには必須となるであろう繰り返しのリスト表示ですがこれも簡単です。
HTMLに{{}}
は一つしかありませんが、表示結果は複数並んでいます。このカギを握るのがv-for
で、これはリスト形式のデータを繰り返して表示する時に使う属性です。v-for
に定義されているuser in users
のusers
は、JSのdata
内にあるusers
というリストと紐付いています。user
はusers
リスト内の各オブジェクトをfor in
文で順番に取り出しているイメージです。user
はv-for
属性のスコープ内で定義されているので、そのタグより外に{{ user }}
と定義しても表示されません。なお、わかりやすくするためにusers
リストの中のuser
と定義しましたが、定義名自体は自由なのでxxx in users
という様になっていれば問題ありません。
ファンクション(関数)
最後に動作の要となるファンクションの登録方法についても見ていきましょう。
まずはJavaScriptを見てみてください。Vueインスタンスへ新たにmethods
オブジェクトとその中でadd
ファンクションが追加されていると思います。このmethods
に登録したいファンクションを定義してあげることで、Vueのアプリで利用できるようになります。今回はnum
をインクリメントする処理にしました。注目するべきなのはnum
をmethods
内で利用する際はthis.num
と指定しなければならない点です。Vueは自動的にthis
の中にdata
に定義されたプロパティやmethods
に定義されたファンクションを格納します。それらを利用するときはthis.propertyName
やthis.methodName()
と記述する必要があります。
続いてHTMLを見てみましょう。HTMLでは新たにbutton
タグとその中にv-on:click="add"
属性が追加されています。これはbutton
がクリックされた際にadd
ファンクションを実行するための記述です。実際クリックするとadd
ファンクション内の処理が走り数値がインクリメントされます。今回はadd
としていますが、add()
と書いても問題ないですし、ファンクションに引数がある場合はadd(3)
のように書くことももちろんできます。ちなみにv-on:click
は略記法で@click
とも書くこともできます。
まとめ
いかがでしたでしょうか。かなりシンプルにHTMLとJSの連携ができたことに感動しませんか?今日やったことを振り返ってみましょう。
- HTMLの
{{}}
はJSのdata
内のデータと連動して表示できる v-model
属性を使えばinput
などのタグとdata
も紐付けられるv-for
を使えばdata
のリストを繰り返して表示できるv-on:click
か@click
を使えばmethods
で定義したファンクションを実行できる
今回学んだ基本さえ使いこなせれば、簡単なWebアプリケーションだったらもう作れます!次回からは実際にVueで動くTODOリストの作成に入っていきましょう。お楽しみに!
記事一覧
第1回 JSの歴史とVue.jsを選んだ理由
第2回 開発環境とHello Vue.js
第3回 構造のHTMLとスタイルのCSS ★次回★
第4回 JSコーディング開始
第5回 保存と読込
第6回 リストのフィルター