Vue.jsの基本3(Vueの機能確認2)

目次

本項ではVue.js v.2のドキュメントに従い、言語の仕様を試します。
Vue.js v.2 日本語ドキュメント
https://jp.vuejs.org/v2/guide/

1.Vueの動作環境
(1)動作環境
 ・Windows 10 Pro
・XAMPP Control Panel v3.2.4
(2)Vueの導入
 Vueは下記のcdnからコードを読み込んで使用します。
・開発版(コンソールへの警告文が含まれている)<script src=”https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js”></script>
・本番版(サイズと高速化のため最適化されている)<script src=”https://cdn.jsdelivr.net/npm/vue@2.6.14″></script>

(3)動作確認方法
 Webサーバ(XAMPP)のドキュメントルート(”C:/xampp/htdocs”)にindex.html、javascript(.js)などのファイルを置き、XAMPPのApacheを起動してブラウザ(http://localhost)で確認します。

2.算出プロパティ
(1)算出プロパティ
 算出プロパティでテンプレートで使うロジックを作成します。
sample12
index.html

main.js

 ここで宣言した算出プロパティreversedMessageはプロパティapp12.reversedMessage に対するgetter 関数として利用されます。
 app12.reversedMessage の値は、常にapp12.messageの値に依存しているので、app12.messageの値が変わるとapp12.reversedMessage の値も変わります。

(2)メソッド
 上記(1)の算出プロパティをメソッドに変えても同じ結果が実現できます。
sample13
index.html

・ここではreversedMessageはメソッドなので()を付けて、reversedMessage()とします。

main.js

3.クラスとスタイルのバインディング
 v-bind:class にオブジェクトを渡すことでクラスを動的に切り替えることができます:<p v-bind:class=”{クラス名: 真偽値, クラス名: 真偽値, …}”>
sample14
index.html

・’text-danger’のように、クラス名にハイフンを含む場合は”(シングルクォート)で囲む。

main.js

データプロパティの真偽値を変えることで、クラスを切り替えることができます。

4.条件付きレンダリング
(1)2つのブロックの切り換え
 v-if ディレクティブは、ブロックを条件に応じて描画したい場合に使用されます。ブロックは、ディレクティブの式が真を返す場合のみ描画されます。
sample15
index.html

main.js

コンソールから「app15.awesome=false」を入力

(2)3つ以上のブロックの切り換え
sample16
index.html

main.js

コンソールから「app16.type=”B”」を入力

コンソールから「app16.type=”C”」を入力

コンソールから「app16.type=”D”」を入力

5.リストレンダリング
(1)v-forで配列に要素をマッピングする
 配列に基づいて、アイテムのリストを描画するために、v-for ディレクティブを使用することができます。v-for ディレクティブは item in items の形式で、ソースデータの配列itemsから配列要素を反復してitemに入れます。
sample17
index.html

main.js

(2)オブジェクトのプロパティに対してv-for を使って反復処理
 オブジェクトのプロパティに対して、v-for を使って反復処理することができます。
sample18
index.html

main.js

6.イベントハンドリング
(1)イベントハンドラ
 v-on ディレクティブを使うことでイベント発生時の JavaScript の実行が可能になります。
sample19
index.html

main.js

(2)メソッドイベントハンドラ
 上記(1)ではv-on 属性の値に JavaScript 式を記述しましたが、ここではメソッドを呼び出す形に改造します。
sample20
index.html

main.js

呼出し時

「Add 1」ボタン押下

7.フォーム入力バインディング
 formのinput要素やtextarea要素、select要素に双方向 データバインディングを作成するにはv-modelディレクティブを使用することができます。
(1)テキストの入力と表示
<input v-model=”message” ・・・>
sample21
index.html

main.js

(2)複数行テキストの入力と表示
<textarea v-model=”message” ・・・></textarea>
sample22
index.html

main.js

(3)チェックボックス
 単体のチェックボックスはboolean値で初期値をchecked:falseとする。
sample23
index.html

main.js

8.コンポーネントの基本
(1)コンポーネントの作成と利用
sample24
index.html

main.js

・コンポーネントの data オプションは、各インスタンスが返されるデータオブジェクトの独立したコピーを保持できるように、関数でなければなりません。

(2)プロパティを使用した子コンポーネントへのデータの受け渡し
 props オプションを使用して、このコンポーネントが受け入れるプロパティのリストに含めることで、HTML要素からカスタム属性としてデータを渡すことができる。
sample24_2(HTMLのカスタム属性でデータを渡す例)
index.html

main.js

sample24_3(Vueインスタンスのデータを読み込んで渡す例)
 Vueインスタンスの配列データをv-forで読み込んだオブジェクトをv-bind を使って動的にプロパティを渡すことができる。
 index.html

main.js

(3)コンポーネントの再利用

sample25
Index.html

9.コンポーネントの登録
(1)コンポーネントの登録
 コンポーネントの登録は Vue.component の第一引数にコンポーネント名を書き、次の様式で書く。
 Vue.component(‘my-component-name’, { /* … */ })
 コンポーネント名を定義する時、ケバブケース(文字の区切りにハイフンを使う)とパスカルケース(最初の文字を大文字にしたキャメルケース)の両方が使える。ケバブケースではコンポーネントの登録とカスタム要素の参照ともにケバブケースを使う。

(2)グローバル登録とローカル登録 
 Vue.componentだけを使ってコンポーネントを作成するとグローバルコンポーネントとなり全てのルートVueインスタンス(new Vue)のテンプレート内で使用できますが、使用しないときも最終ビルドに含まれてJavaScriptのファイルサイズを不要に増加させてしまいます。
 ローカル登録することでJavaScriptのファイルサイズを不要に増加させることを防ぐことができます。
 ローカル登録ではコンポーネントを素のJavaScript オブジェクトとして定義して、Vueインスタンスのcomponentsオプション内に使いたいコンポーネントを定義します。

sample26(コンポーネントのグローバル登録)
 index.htmlファイル

main.js

sample27(コンポーネントのローカル登録)
index.html

main.js

The end