了解しました。
ここでは、Vue.js(バージョン2.7)が DOM(Document Object Model)とどう関わるのか、
そして jQueryなどのような「手動DOM操作」とVueの違い を、初心者にもわかりやすく説明します。
{{ }}
や v-if
など)を使って、Vueが裏でDOMを操作してくれる。まずは、Vueを使わずに手動でDOMを操作する例(jQuery的)と、 VueでリアクティブにDOMを更新する例を比較してみましょう。
dom-manual.html
(手動操作の場合)<!-- ボタンを押すとメッセージを書き換えるシンプルな例 -->
<div id="app">
<h1 id="msg">こんにちは</h1>
<button onclick="changeText()">変更</button>
</div>
<script>
// ボタンを押すとDOMを手動で変更する関数
function changeText() {
// DOMから要素を取得して、テキストを変更
document.getElementById('msg').innerText = 'こんばんは';
}
</script>
dom-vue.html
(Vueでの自動操作)<!-- Vue.jsの読み込み -->
<script src="<https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js>"></script>
<!-- VueでのリアクティブなDOM操作 -->
<div id="app">
<!-- messageを表示 -->
<h1>{{ message }}</h1>
<!-- クリックでmessageを変更 -->
<button @click="changeText">変更</button>
</div>
<script>
// Vueインスタンスを作成してDOMを制御
new Vue({
// 対象となるDOMの範囲を指定
el: '#app',
// 表示されるデータを定義
data: {
// 初期メッセージ
message: 'こんにちは'
},
// イベント処理の関数を定義
methods: {
// ボタンが押されたときの処理
changeText() {
// データを変更 → 自動でDOMが更新される
this.message = 'こんばんは';
}
}
});
</script>
<!-- Vue.jsの読み込み -->
<script src="<https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.min.js>"></script>