VUE與MVVM關係

VUE

一款用於構建用戶界面的漸進式js框架,vue被設計爲自底向上逐層應用,它的核心庫只關注圖層,方便與第三方庫或者已有項目整合。vue.js的核心是一個允許採用簡潔的模板語法來聲明式將數據渲染進DOM (DocumentObjectModel)的系統,vue特性之一是響應式原理

MVVM

在這裏插入圖片描述

1. 概念:實質是MVC的改進版,將之前的Model-View-Controller 變換到現在的Model-View-ViewModel,外觀是將controller變爲ViewModel,但是實質裏面對應的關係發生了變化,其核心是提供對view和ViewModel的雙向數據綁定(v-model),

2. mvvm 組成:來自維基百科

1) 模型
模型是指代表真實狀態內容的領域模型(面向對象),或指代表內容的數據訪問層(英語:data access layer)(以數據爲中心)。

2) 視圖
就像在MVC和MVP模式中一樣,視圖是用戶在屏幕上看到的結構、佈局和外觀(UI)。

3) 視圖模型
視圖模型是暴露公共屬性和命令的視圖的抽象。MVVM沒有MVC模式的控制器,也沒有MVP模式的presenter,有的是一個綁定器。在視圖模型中,綁定器在視圖和數據綁定器(英語:Data binding)之間進行通信。

4) 綁定器
聲明性數據和命令綁定隱含在MVVM模式中。在Microsoft解決方案堆(英語:solution stack)中,綁定器是一種名爲XAML的標記語言。

3. mvvm 實現原理

  1. 數據劫持
    Vue.js的實現方式,對數據(Model)進行劫持,當數據變動時,數據會出發劫持時綁定的方法,對視圖進行更新。

  2. 執行步驟:解析模版 -->解析數據–>綁定模版與數據

  • 對應代碼: 詳細說明
    在這裏插入圖片描述
    4. 對應代碼詳解:
  • model:在當前vue中我們使用的model 只負責數據(data,porps),也就是DTO一個貧血的Model數據,也可以再model中定義數據修改和操作的業務,但是我們和外界數據交互動統一接口到了vm中,代碼體現在data和props。
  • View:頁面UI佈局,負責將數據模型轉化爲UI展示,實質爲tempelate和style。
  • ViewModel: 同步view和model對象,使得view和model間沒有直接聯繫,vm通過雙向綁定將view和model連接起來實現自動同步,對應代碼中的methods
  • v-model等:其實這種綁定的機制是由vue自己封裝的,也就是通過js封裝,但是這種機制是從view視圖演變過來的(看下面的mvc-mvvm過程),所以v-model雖然不是html的屬性但是也是屬於view的,view通過view向vm傳遞消息,因爲我們看不到v-model的邏輯,所以不屬於vm的部分,他是一個向外傳遞的一個接口。

在這裏插入圖片描述

在這裏插入圖片描述

MVVM演進過程:mvc–>mvp–>mvvm

在這裏插入圖片描述

**↓**

在這裏插入圖片描述

**↓**

在這裏插入圖片描述

前後端交互

在這裏插入圖片描述

mvvm中model是否可以對外接口

其實我們可以將前端對後端的接口調用放到我們的model的data裏面,但是有一個問題,data裏面的return目的是爲了方面我們用很多的子組件,他們之間的傳值使用解除耦合關係,這樣每次使用data時候返回整組數據,其實在我們的生命週期和data都是我們的函數,我們只是將方法寫到了methods中,統一方法方面我們調取。

發佈了229 篇原創文章 · 獲贊 64 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章