標籤:

編程中的 Model 到底是什麼?

MVCModel - View - Controller 中 Model 到底是啥?

常見翻譯 Model 為 模型,數據,實體類,百度也這麼講的:model_百度百科

在各大 MVC 框架中,Java 的 Spring MVC 最有代表性,下文以Java為例。

實際編程時,常有用戶的個人資料:

基本資料一般包含"名字"、"年齡"、"城市"等,英文欄位:id, gender, age, city 這些決定了 Model 的樣子

在資料庫則為 user 表,也就是 Model 在資料庫中的樣子

在 java 表現為 User 實體類:

數據在 controller 應該是 User 類的實例對象,而如果前後分離的話,這個實例對象會轉成 json 格式。

數據在 View 中通常是 html 結構了:

數據從資料庫,到 Model(User類),再到 Controller(new User),再到 View ( html / css ),最後在瀏覽器中看到,如圖示

Model 在 MVC 框架的角色是:有很多欄位組成的數據。這些數據可以是:類,對象,字典,集合,這些數據準備在 Controller 里被操作(即增刪改查),最後在 View 呈現出來。

與 MVC 相對的,還有 MVVM,其中的 VM 是 ViewModel 的縮寫,淡化了 Controller.

有些數據不用表現在 View, 如 id,一般用於與後端的 ajax 操作

而有的數據則綁定在 View, 如 表單的欄位,還有 clicked selected 這樣的 View 狀態,與後端沒有關係的欄位。這些通常就是 ViewModel 的應用場景。

MVVM 在 js 框架里,Model 通常來源於與後端通訊的 ajax 格式的數據,好比 java 的實體類是來源於資料庫般,而 ViewModel 則是綁定到View中的數據,像原生 js 的datasetjQuery 的data(),angular1的 $scope, angular2 的 @Input 等,react 中的 state, vue 中的 data,都是ViewModel 實現方式。

╔————————————╗ │ ** 感 * 謝 * 閱 * 讀 ** │ ╚————————————╝


推薦閱讀:

React與Vue有什麼不同?
Vue學習「心酸」歷程(連載第一篇)
在什麼場景下,選擇 AngularJS 比其他前端框架更好?
不僅僅是複製粘貼 - 聊聊前端腳手架
今天來讀點snabbdom吧~?

TAG:前端框架 |