前言:
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
- Binding Data -----實現數據的傳遞
- Command -----實現操作的調用
- AttachBehavior -----實現控件加載過程中的操作
