1. Home
  2. JavaScript
  3. Vue.js
  4. Vue.jsで簡単に色々なHelloWorld!

Vue.jsで簡単に色々なHelloWorld!

  • 公開日
  • カテゴリ:Vue.js
  • タグ:JavaScript,Vue
Vue.jsで簡単に色々なHelloWorld!

Vue.js のコアソースは公式 より開発版をダウンロードして使用

Contents

  1. ベーシックな HelloWorld
  2. ボタン押下で HelloWorld
  3. フォームから入力して HelloWorld
  4. ボタン押下で HelloWorld(v-show ディレクティブ)
  5. ボタン押下で HelloWorld(v-if ディレクティブ)

ベーシックな HelloWorld

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>Vue.js - Hello world</title>
</head>
<body>

<div id="app">
  {{ message }}
</div>

<script src="./vue.js"></script>
<script>
  new Vue({
      el: '#app',

      data () {
          return {
              message: 'Hello world!'
          }
      }
  })
</script>
</body>
</html>
HTML
  1. id 名「app 」を持つ DIV要素を作成する。
  2. その中に、Mustache 構文で message をセット
JavaScript
  1. Vue.js のコアソースを読み込み
  2. el プロパティで id 名を指定すると、「Vue.js で描画する対象を、id 名「app 」配下とする」という意味になる
  3. データプロパティに message を定義

ボタン押下で HelloWorld

<div id="app">
  <p>{{ message }}</p>
  <button @click="display">メッセージを表示する</button>
</div>

<script src="./vue.js"></script>
<script>
  new Vue({
      el: '#app',

      data () {
          return {
              message: ''
          }
      },

      methods: {
          display: function () {
              this.message = 'Hello world!';
          }
      }
  })
</script>
HTML
  1. ボタンに v-on ディレクティブでクリックイベントを設定する
JavaScript
  1. methods に、ボタン押下イベント発生時に実行する display メソッドを定義

フォームから入力して HelloWorld

<div id="app">
  <p>{{ message | stripTag }}</p>
  <input type="text" v-model="input">
  <button @click="display">メッセージを表示する</button>
</div>

<script src="./vue.js"></script>
<script>
  new Vue({
      el: '#app',

      data () {
          return {
              message: '',
              input: 'Hello world!'
          }
      },

      filters: {
        stripTag: (value) => {
            return value.toString().replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'')
        }
      },

      methods: {
          display: function () {
              this.message = this.input
          }
      }
  })
</script>
HTML
  1. Mustache 構文で message をセットする際に、パイプでフィルターをセットする事もできる
  2. この例では、フィルターでタグを除去している
  3. 入力値を表示させる場合は XSS 攻撃の危険があるので非推奨

ボタン押下で HelloWorld(v-show ディレクティブ)

<div id="app">
  <p v-show="isShow">Hello world!</p>
  <button @click="display">メッセージを表示する</button>
</div>

<script src="./vue.js"></script>
<script>
  new Vue({
      el: '#app',

      data () {
          return {
              isShow: false
          }
      },

      methods: {
          display: function () {
              this.isShow = true;
          }
      }
  })
</script>
HTML
  1. v-show ディレクティブに isShow プロパティを指定する
  2. v-show ディレクティブは必ず描画を行い、style である display:block/none で表示・非表示を制御する
JavaScript
  1. ボタンを押下した際に methods プロパティの display が呼ばれ、isShow プロパティを true に切り替える

ボタン押下で HelloWorld(v-if ディレクティブ)

<div id="app">
  <p v-if="isShow">Hello world!</p>
  <p v-else>メッセージはありません</p>
  <button @click="toggleMessage">{{ buttonLabel }}</button>
</div>

<script src="./vue.js"></script>
<script>
  new Vue({
      el: '#app',

      data () {
          return {
              isShow: false
          }
      },

      computed: {
          buttonLabel () {
              return this.isShow ? 'メッセージを非表示にする' : 'メッセージを表示する'
          }
      },

      methods: {
          toggleMessage: function () {
              this.isShow = !this.isShow
          }
      }
  })
</script>
HTML
  1. v-if ディレクティブに isShow プロパティを指定する
  2. 同時に v-else ディレクティブも設置する
  3. よくある if-else と同じ意味を持っていて、この場合、isShow が true なら v-if ディレクティブが描画され、false なら v-else ディレクティブが描画される
  4. これらは描画と破棄を繰り返す為、何度も表示の切り替えが必要なインタラクションの場合は v-show を使いましょう
JavaScript
  1. ボタン押下でイベントが発火し toggleMessage() メソッドが呼ばれ、isShow プロパティの真偽値を反転させている
  2. これによってメッセージの表示が切り替わる
  3. 同時に、computed(算出プロパティ)の buttonLabel() メソッドが真偽値を評価し、ボタンのラベルを返している

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級