見出し画像

そうだ!Vue.jsを使ってみよう! - 1

公式のガイドのページを見ながら使ってみようと思います。

まず使うときには、フレームワークのインポートからです。

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

開発バージョン、便利なコンソールの警告が含まれているものを使って見ます。

まずは、ホームページ上に文字を表示させることから始めます。

HTMLの部分は(<body></body>)

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

と記述をしておきます。

スクリプトの部分<script></script>に、

var app = new Vue({
 el: '#app',
 data: {
   message: 'Hello Vue!'
 }
})

と記述すると、ホームページ上は、

Hello Vue!

と表示されます。HTML上の <div>{{ message }}</div>の部分にスクリプトで命令したことが反映されています。

ここで全体のHTMLを書いておきます。

<html>
<head>
   <style>
body{
   font-family:sans-serif 
}
   </style>
   <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
   <div id="app">
       {{ message }}
   
   </div>
   <div id="app-2">
       <span v-bind:title="message">
       
       </span>
     </div>
  
   
   <script>
var app = new Vue({
 el: '#app',
 data: {
   message: 'Hello Vue!'

   
 }
})
   </script>
</body>
</html>

ホームページ上の記述の変更ができました。次に、

<div id="app-2">

 <span v-bind:title="message">
 
   Hover your mouse over me for a few seconds
   to see my dynamically bound title!
   
 </span>
 
</div>

というHTML上のタグが並んでいる場合の

<span v-bind:title="message">

の部分をスクリプトで変更して見ましょう。スクリプト部分に

var app2 = new Vue({
 el: '#app-2',
 data: {
   message: 'You loaded this page on ' + new Date().toLocaleString()
 }
})

と書いて実行、ホームページをリロードすると、

Hover your mouse over me for a few seconds
to see my dynamically bound title!

という文字が表示されます。その表示を確認して、

<span v-bind:title="message">

の部分をブラウザのインスペクタ(要素を調査)でHTMLがどうなっているかを見てみると、

<span title="You loaded this page on 2020/11/6 5:45:26">

となっていることが確認できると思います。(以下Firefoxのインスペクタを使っています)

画像1

そして、コンソールに移動して、

app2.message = 'こんにちは'

と書いて、実行(return)して見ましょう。

<span title="こんにちは">

となっていることが確認できると思います。"<span></span>"の中の文字を変更することができます。

画像2

<span v-bind:title="message">

"v-bind:title"とすることで動的に"title"の変更ができるということです。

v-bind 属性はディレクティブと呼ばれています。ディレクティブは Vue.js によって提供された特別な属性を示すために v- 接頭辞がついています。これはあなたの推測通り、描画された DOM に特定のリアクティブな振舞いを与えます。ここで宣言されているのは、「この要素の title 属性を Vue インスタンスの message プロパティによって更新して保存する」ということになります。


この記事が気に入ったらサポートをしてみませんか?