1. 程式人生 > >Vue框架構造

Vue框架構造

流行 而且 情況 手機 img 框架 用戶體驗 主動 數據持久化

Vue 程序結構框架

技術分享圖片

Vue.js是典型的MVVM框架,什麽是MVVM框架,介紹之前我們先介紹下什麽是MVC框架

MVC 即 Model-View-Controller 的縮寫,就是 模型-視圖-控制器 , 也就是說一個標準的Web 應用程序是由這三部分組成的:

View 用來把數據以某種方式呈現給用戶。

Model 其實就是數據。

Controller 接收並處理來自用戶的請求,並將 Model 返回給用戶。

MVC框架對於簡單的應用處理是可以的,也符合軟件架構的分層思想。但隨著H5 的不斷發展,人們更希望使用H5 開發的應用能和Native 媲美,或者接近於原生App 的體驗效果,於是前端應用的復雜程度已不同往日,今非昔比。這時前端開發就暴露出了三個痛點問題:

  • 開發者在代碼中大量調用相同的 DOM API, 處理繁瑣 ,操作冗余,使得代碼難以維護。
  • 大量的DOM 操作使頁面渲染性能降低,加載速度變慢,影響用戶體驗。
  • 當 Model 頻繁發生變化,開發者需要主動更新到View ;當用戶的操作導致 Model 發生變化,開發者同樣需要將變化的數據同步到Model 中,這樣的工作不僅繁瑣,而且很難維護復雜多變的數據狀態。

其實,早期jquery 的出現就是為了前端能更簡潔的操作DOM 而設計的,但它只解決了第一個問題,另外兩個問題始終伴隨著前端一直存在。隨著智能手機,平板電腦的流行,多終端開始流行。

MVVM框架開始流行,應用場景:

  • 針對具有復雜交互邏輯的前端應用
  • 提供基礎的架構抽象
  • 提供ajax數據持久化,保證前端用戶體驗
技術分享圖片

框架數據分層情況:

  • Model 層代表數據模型,可以在Model中定義數據修改和操作的業務邏輯
  • View 代表展示層,它負責將數據模型轉化成UI 展現出來
  • ViewModel 是一個同步View 和 Model的對象
技術分享圖片

圖例介紹:

  • Observer 數據監聽器,能夠對數據對象的所有屬性進行監聽,如有變動可拿到最新值並通知訂閱者,內部采用Object.defineProperty的getter和setter來實現。
  • Compile 指令解析器,它的作用對每個元素節點的指令進行掃描和解析,根據指令模板替換數據,以及綁定相應的更新函數。
  • Watcher 訂閱者, 作為連接 Observer 和 Compile 的橋梁,能夠訂閱並收到每個屬性變動的通知,執行指令綁定的相應回調函數。
  • Dep 消息訂閱器,內部維護了一個數組,用來收集訂閱者(Watcher),數據變動觸發notify 函數,再調用訂閱者的 update 方法。

圖中思路:從圖中可以看出,當執行 new Vue() 時,Vue 就進入了初始化階段,一方面Vue 會遍歷 data 選項中的屬性,並用 Object.defineProperty 將它們轉為 getter/setter,實現數據變化監聽功能;另一方面,Vue 的指令編譯器Compile 對元素節點的指令進行掃描和解析,初始化視圖,並訂閱Watcher 來更新視圖, 此時Wather 會將自己添加到消息訂閱器中(Dep),初始化完畢。

當數據發生變化時,Observer 中的 setter 方法被觸發,setter 會立即調用Dep.notify(),Dep 開始遍歷所有的訂閱者,並調用訂閱者的 update 方法,訂閱者收到通知後對視圖進行相應的更新。

Vue框架構造