前言:關於前端的MVVM架構


 前言:  

      Web應用的功能越來越強,Javascript代碼也越來越多,大量的JS代碼要以何種架構來組織就成了一個亟待解決的問題。老牌軟件架構模式MVC(Model-View-Controller)就是一種相當不錯的方案,雖然它定義不明確需要很多時間來思考如何組織,崇尚代碼分離增加了調試難度,但畢竟臉熟(……),從用CakePHP的時候就接觸過這個概念,以我能理解的方式描述就是:Models用來處理數據,View將處理結果呈現給用戶,Controller用來連接這兩者。所以一個Web應用的流程通常是這樣的:

  • 1. 用戶在View上進行操作——比如在文本框輸入數值或是點擊按鈕
  • 2. Controller處理這個動作
  • 3. Controller通過Model對數據進行增刪改查,將其傳遞到View
  • 4. View將數據展示給用戶

      以上描述來自Javascript Web Applications一書,其中有用MVC組織JS代碼的具體方法。如果想偷懶的話,也有一些現成的JS框架來做這件事。說到JS框架可能最先想到的是jQuery,這類MVC框架和jQuery解決的問題不同,jQuery主要用來對頁面元素進行操作上,比如我要移動一個按鈕,或是將某個按鈕設置為隱藏。而前端MVC框架除了將代碼合理的組織以外,操作上也不是側重於設置一個動作,當觸發時進行某些處理這種方式。而是綁定Model,當Model改變時,View接收到通知,重新渲染。不需要手動指定頁面元素更新HTML,改變Model時直接改變View

MVVM模式 (簡稱ViewModel模式,由MVC模式發展而來)

介紹連接:http://www.codeproject.com/KB/WPF/WpfMvvmQuickStart.aspx

 ------- Model-View-ViewModel

          核心思想是將應用程序行為與用戶界面相分離,增強測試的方便性,容易維護。

  • Model          --- 數據訪問層
  • View            --- UI界面
  • ViewModel  --- 它是View的抽象,負責View與Model之間信息轉換,將View的Command傳送到Model
View與ViewModel連接的方式:
  • Binding Data      -----實現數據的傳遞
  • Command          -----實現操作的調用
  • AttachBehavior  -----實現控件加載過程中的操作
 View省去了大量的邏輯代碼,轉移到了ViewModel,而是執行一些命令向其請求一個動作。相反ViewModel與Model通訊,來更新UI,實現了松耦合,提高了可測試性。
 
 
擴展閱讀:
 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM