-
1 # 偶爾來逛逛隨便來瞧瞧
-
2 # 刀法如飛
不需要後端基礎來理解mvc mvp mvvm。
mvc 就是模型試圖控制器,模型類似資料schema,就是這個要渲染檢視的資料結構;v就是模板,用於將資料格式化展示;c就是控制器,控制使用哪個模板,並將model與檢視做對映,這樣模型的資料就繪製到檢視了。一般在controller和model中間會加一個service來處理下業務。
mvp跟mvc挺像,所不同是p是presenter,用來替代c,這種模式下,不再是model直接對映到模板,而是透過presenter來把model資料拿到,然後由presenter這個代理器來將資料寫入到檢視,這樣檢視與model進行了解綁,開發變得更靈活,presenter還可以操控資料。
mvvm就是從模型資料直接到檢視再從檢視到模型。這樣去掉了v或者p,不再需要一層控制器或者代理器。這樣的好處就是,針對資料模型程式設計,改變了資料也就是改變了檢視,由框架來把檢視和資料的聯動搞定,開發者更多關心是資料邏輯開發,而複雜的dom操作,事件處理交給了框架。這樣大型開發會變得容易些。m到v就是要監聽到資料的變動,比如defineProperty、proxy、不停資料檢測等方式來獲知資料發生了改變,然後將改變後的資料更新到檢視上;v到m就是監聽dom的更新事件,凡事dom更新則將對應model更新。
其實實際工作中仍然會三者有些結合或借鑑。目前大多采用mvvm框架,但是模型仍然是需要獨立的,而且也需要service來進行承接,檢視與模型的對應也可以檢視對應的代理器完成。
有時候我們為了實現松耦合和程式碼的易維護性,儘量將資料和檢視以及聯結器等解藕,這時候你覺得哪種實踐最合適就怎麼做,也不必拘泥於某個固定的形式。
-
3 # 做前端的蝸牛
什麼是MVC以及它的作用?
MVC是一種分層架構模式,M代表資料模型以及相關資料處理邏輯,V就是使用者介面,C代表控制器(可以認為它是邏輯處理路由)!通常的情景是使用者操作了可視介面(V),使用者的資訊傳遞給了控制器,控制器把使用者指令分發給對應的資料層(M),最終資料層處理好資料後,將最新的資料反映到介面上!MVC的作用是將以前雜亂的程式碼分層解耦,使得程式碼具有更好的維護性!
如何理解MVC?
在後端的知識體系中,MVC更容易理解!不過在前端中,我們有nodejs可以做後端,我們就拿nodejs舉例!
我們把使用者操作的介面看作View層,使用者操作瀏覽器後,請求來到服務端,路由將請求交給Controller,Controller呼叫對應的服務處理資料,資料處理後返回響應!這裡我將Router和Controller放在一起,Service和db放在了一起!這樣程式碼調理清晰,對程式碼增刪改查都會非常方便!
如果僅僅是瀏覽器端的邏輯,也可以採用MVC架構,例如Backbone.js,方式如下:
1、dom 是 View層
2、對dom的事件繫結,可以看作Controller
3、將原始資料和資料的操作封裝成資料模型(物件)
4、Controller呼叫不同的資料模型處理資料
5、資料處理完成後,採用觀察者模式及時更新View
什麼是MVP、MVVM?
其實MVP和MVVM是MVC的變種,Model和View沒有直接的聯絡了,而是透過中間的那一層進行橋接!目前市場比較流行MVVM模式,比如VUE、REACT等!
總結
不管是哪一種架構模式,其實都是為了方便我們開發和維護,個人認為沒有嚴格的標準去限定有多少層以及層與層的聯絡,只要適用於業務就是好的架構模式!
-
4 # 寫後半生
汗啊。JS不就是MVC中的C嗎?
這麼一說不就很容易理解了吧?
HTML是M
CSS是V
M:有什麼
V:什麼樣
C:怎麼樣
回覆列表
mvc和mvp基本是一個東西,區別只在於view是否直接操縱model,mvvm則是雙向繫結,view可以直接修改model,反過來model的改變直接反應在view上。從js來看,node的express就是mvc,而angular則是mvvm