はじめに
Vue.js
に少し触れてみたので、その内容を**「Vue.js入門」**として、数回にわけて書いていこうと思います。
Vue.js
はユーザーインターフェイスを構築するためのプログレッシブフレームワークとのことです。
※ここではVue.jsの**2.x系(2.6.14)**を使用しています。3.x系では書き方が異なるので注意してください。
1. Vue.jsでHello World
1.1. ディレクトリの作成
ルートディレクトリ配下にjs
ディレクトリとindex.html
ファイルを作成します。
js
ディレクトリ配下にmain.js
ファイルを作成します。
C:\Data\git\practice_vue.js\lesson\lesson1>tree /F
フォルダー パスの一覧: ボリューム Windows
ボリューム シリアル番号は F039-627E です
C:.
│ index.html
│
└─js
main.js
C:\Data\git\practice_vue.js\lesson\lesson1>
1.2. HTMLの作成
index.htmlに以下を記載します。
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>Vue.jsでHello World!</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script> <!-- (1) -->
</head>
<body>
<div id="app"> <!-- (2) -->
<p>{{ message }}</p> <!-- (3) -->
</div>
<script src="js/main.js"></script> <!-- (4) -->
</body>
</html>
(1)の部分はVue.js
のを読み込んでいます。
(2)の部分でidを指定します。このidの名称(ここではapp
)で、後で作成するVueのインスタンスとを紐付けます。
(4)の部分はVue.js
で記述された'main.js'ファイルを読み込んでいます。
(3)の部分は(4)で読み込んでいる'main.js'の中で定義されたmessage
という名前のデータを表示しています。
1.3. jsの作成
js
ディレクトリ配下のmain.js
に以下を記載します。
var vm = new Vue({ // (1)
el: '#app', // (2)
data: {
message: 'Hello World!' // (3)
}
});
(1)でVue
コンストラクタからインスタンスを作成しています。
(2)el
に'#app'
を設定し、index.html
のid="app"
の部分と紐付けます。
(3)data
のmessage
に'Hello World!'
を設定ます。
1.4. 動作確認
ブラウザでindex.html
を開くと以下のようにHello World!
が表示されます。
2. 双方向データバインディング
2-1. index.htmlを修正
index.html
の<div id="app">
の中に<input type="text" v-model="message">
を追加します。
以下のindex.html
の(1)の部分。
<!DOCTYPE html>
<html lang="jp">
<head>
<meta charset="utf-8">
<title>Vue.jsでHello World!</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14"></script>
</head>
<body>
<div id="app">
<input type="text" v-model="message"> <!--(1) -->
<p>{{ message }}</p>
</div>
<script src="js/main.js"></script>
</body>
</html>
(1)のv-model
はVue
インスタンスのデータと、フォーム部品の値を関係づけます。
ここではVue
インスタンスのデータmessage
をフォーム部品input
に値を関係づけます。
これを「双方向データバインディング」といいます。
2.2. 動作確認
ブラウザでindex.html
を開くと以下のようにHello World!
が表示されます。
テキストボックスに何か入力すると、その内容が即時反映されます。
あとがき
次回は算出プロパティ(computed)と監視(watch)について書きたいと思います。