以知乎为例子来说明MVC是个啥
????????記得當時了解Web開發的MVC(Model-View-Controller)模式后,有一種心血噴涌的感覺,覺得太有意思了(程序員別噴,我就是這么沒見過世面)。我們以知乎為例子來說明MVC是個啥:
????????每個人的主頁都是相同的布局和風格,例如最上面的菜單搜索欄,顏色分割,左邊顯示動態等,右邊是個人信息等,然后具體的內容卻因人而異—每個人的頭像,名字,動態都是不一樣的。那么知乎是如何保證每一個人看到的都是自己的主頁呢?
????????你可以把這個相同的布局想象成一個模板,里面有一個個空格子,當你用你的賬戶登陸頁面時,想象你的電腦里有無數個小人根據你的賬號從知乎后臺的數據庫里取出你的頭像,動態,認證信息等等內容,然后對應著模板上規定好的位置,把對應的內容填進去。這些小人的動作實在是太快了,以至于你覺得這是在瞬間完成的。
????????上面所說的模板就是MVC中的V,是View的縮寫,負責顯示。這樣做的好處在于,如果知乎有一天突然想改變一下個人主頁的風格,那么只需要改變這一個模板,然后幾千萬注冊用戶的主頁就相應的變化了,因為模板是公用的,是不是省了很多事情?(早期的Web開發可不是這樣喲,你可能要一個個用戶去改,非常麻煩。)
????????而這些小人除了擺放內容,它們真正負責的是業務邏輯,我們把他們叫做Controller,也就是MVC中的C。例如當你登陸的時候,這些小人要檢查你的用戶名是不是準確的,如果準確,它們要去數據庫里取出你請求的信息等,如果用戶名錯誤,它們要攔截住你的登陸。它們的職責還有很多,無法一一列舉。在實際中,這些小人做的事情其實就是Python(或者其它腳本語言)做的事情。
????????最后,MVC中的Model其實就是傳給View的數據,包括上面的頭像,用戶名,動態等因人而異的數據。這些數據在知乎服務器上是以數據庫表格(table)的形式存在的,你可以把它們想象成很多不同的excel表格,不同的表格儲存著不同的信息,有些記錄著知乎用戶的個人信息,有些記錄著回答,有些記錄著評論等等,而這些表格之間又彼此聯系,當你在知乎的不同網頁間跳轉的時候,上面說的那些小人就根據你的要求,組合對應的表格取出對應的數據,然后把他們放到模板對應的空格里,發送給瀏覽器。然后瀏覽器根據你寫的CSS,用不同的顏色,大小等等,將數據很漂亮的顯示出來。
????????這樣做的好處是什么呢?雖然你最終在瀏覽器里看到的是一個完整的頁面,但是在后端邏輯上它們都是區分開的——模型(M),視圖(V)和控制器(C)的區分就保證了較高的可維護性——我可以隨時修改主頁的顯示并看到效果,同樣我可以隨時加入一些業務邏輯。
????? ? 簡單來說,MVC指Controller控制器根據不同情況獲取Model數據,處理后傳給View模板進行顯示。
作者:賽門喵Simon
鏈接:https://www.zhihu.com/question/29138020/answer/141170242
來源:知乎
總結
以上是生活随笔為你收集整理的以知乎为例子来说明MVC是个啥的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冒泡排序详解--python
- 下一篇: 深拷贝的三种方式