【Vue.js】MVVM 的概念

Neptune Li
Li-NInja
Published in
Oct 25, 2020

🚩 前言

在介紹 MVVM 的概念之前要先介紹 MVC 架構,
MVC 是一個軟體架構模式,
這套軟體架構模式可以被使用在前端開發上,也可以被使用在後端開發上。
本文介紹的 MVC 架構是以開發前端爲主。

MVVM 是一個軟體架構模式,
他能夠有助於將開發的商業邏輯與畫面呈現做切割,
可以更好地針對問題來解決。

🚩 MVC

MVC 架構(Modal — View — Controller),這三個英文分別代表的是:

  • Modal — 模型
  • View — 視圖
  • Controller — 控制器
圖片來源:六角學院

當 MVC 架構套用在前端開發時,他們分別代表的意思會是:

  • Modal
    與資料介接的地方,負責去向 DB 撈取資料
  • View
    一般使用者看到的網頁畫面
  • Controller
    負責 View 與 Modal 之間的溝通

例如:
使用者在畫面上(View)看到了 皮卡丘 與一個按鈕,
當使用者按下按鈕之後,
會觸發 JavaScriptAddEventListener(Controller),
取得修改的值 噴火龍(Modal),
使用操作 DOM 元素的方式更改 pokemon(Controller),
最後的結果就是 皮卡丘 換成了 噴火龍(View)。

<body>
<div id="pokemon">皮卡丘</div>
<button id="go">就決定是你了</button>
<script>
const btn = document.getElementById('go');
const pokemon = document.getElementById('pokemon');
const newPokemon = '噴火龍';
btn.addEventListener('click', () => {
pokemon.textContent = newPokemon;
});
</script>
</body>

🚩 MVVM

MVVM(Model — ViewModel — View),這三個英文分別代表的是:

  • Modal — 資料狀態
  • ViewModal — 資料連結器
  • View — 視圖

這三個分別的用途是:

  • Model
    儲存資料(變數)的值
  • ViewModel
    負責 Model 與 View 之間的橋梁
  • View
    一般使用者看到的網頁畫面
圖片來源:六角學院

🚩 Vue.js

Vue 是以資料狀態操作畫面,
他扮演 MVVM 架構當中的 ViewModel,
可以有效的將負責視圖的 HTML 與負責資料狀態的 JavaScript 做一個切割。
能讓開發者專注於解決版面顯示的問題,
或是資料邏輯的 JavaScript 的問題。

例如:
使用者在畫面上(View)看到了 皮卡丘 與一個按鈕,
當使用者按下按鈕之後,
會觸發 Vue 的 changeName 方法(ViewModal),
pokemon 的值修改為 噴火龍(Modal),
因爲 ViewModal 與 View 是 Binding 的關係,
讓 View 的值顯示為 噴火龍

<body>
<div id="app">
<div>{{ pokemon }}</div>
<button @click="changeName">就決定是你了</button>
</div>
<script>
var app = new Vue({
data: {
pokemon: '皮卡丘',
},
methods: {
changeName() {
this.pokemon = '噴火龍';
},
},
});
</script>
</body>

--

--