Vue.js を初めて使う方に向けて、今回は Vue.js で追加された独自の HTML 記法について解説します

結論

  • mustache タグ ({{ }}) で script 内の変数を HTML に出力できる
  • v-bind は属性に対して動的な処理を加えるディレクティブ
  • : プレフィックスで v-bind: を省略可能
  • 配列記法を使えば複数の class / style を同時に適用できる

mustache タグ

script 内で定義した変数や関数を HTML 上で使用したい時に mustache タグが使えます

mustache タグは {{ }} を HTML 上に記述すると使用できます。

以下のコードは displayText を script 内で定義し、HTML で呼び出しています。

実際に実行すると 文字列です。 と表示されます。

<template>
  {{ displayText }}
</template>

<script>
export default {
  data() {
    return {
      displayText: '文字列です。'
    };
  },
};
</script>

これが最もシンプルな記法です。

上記例は文字列の変数ですが、オブジェクト型の変数でも、もちろん使用できます。

<template>
  {{ displayObj }}
</template>

<script>
export default {
  data() {
    return {
      displayObj: {
        text: '文字列です。'
      }
    };
  },
};
</script>

注意したいのは、上記コードを実行すると { text: '文字列です。' } と表示される点です。

文字列です。 と表示したい場合は、displayObj.text と記述しましょう。

v-bind

今回の記事で最も大事なのが v-bind です。

v-bind は属性に対して動的な処理を簡単に加えられます

特に class は動的に変えることでページに表現を大幅に加えられるのでよく使用します。

v-bind の基本的な使い方

以下のコードは activeClass というクラスを isActive の真偽値で適用するかどうか判定しています。

実際に実行すると文字色が白い 文字列です。 が表示されます。

<template>
  <div v-bind:class="{ activeClass: isActive }">
    サンプルです。
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true
    };
  },
};
</script>

<style lang="css">
  .activeClass {
    color: #fff;
  }
</style>

script 内のコードで isActive を定義し、HTML の v-bind:class 内で判定しています。

今回のコードは isActivetrue になっているので、false にすると黒文字で表示されます。

v-bind の省略記法

v-bind は省略記法ができます。

記述方法は : を属性の先頭に書くと v-bind が適用されます。


以下のコードは activeClass というクラスを isActive の真偽値で適用するかどうか判定しています。

実際に実行すると黒文字で 文字列です。 が表示されます。

なぜ黒文字なのかは、属性内の判定で ! の not 処理をしているからです。

<template>
  <div :class="{ activeClass: !isActive }">
    サンプルです。
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true
    };
  },
};
</script>

<style lang="css">
  .activeClass {
    color: #fff;
  }
</style>

複数の v-bind

属性で 2 つ以上の v-bind をしたい場合、class 内を配列で記述すると複数設定できます。


以下のコードは activeClasssampleClass の両方のクラスが適用されます。

実際に実行すると白文字で 文字列です。 が表示されます。

<template>
  <div :class="[{ activeClass: isActive }, { sampleClass: sampleNum === 1 }]">
    サンプルです。
  </div>
</template>

<script>
export default {
  data() {
    return {
      isActive: true,
      sampleNum: 1
    };
  },
};
</script>

<style lang="css">
  .activeClass {
    color: #fff;
  }

  .sampleClass {
    width: 100%;
  }
</style>

class は他と同じく通常の判定処理ができるので、比較演算子も使用できます。

基本的に v-bind は全ての属性に適用できます。 しかし使用頻度が高いのは class、style、src です。

まとめ

今回は Vue.js の mustache タグと v-bind を紹介しました。

Vue.js の基礎中の基礎なのでしっかりマスターしましょう。

関連記事: