什麼是MVC?
MVC是一個軟體工程的架構的設計方式,會有MVC的出現其實就是因為如果把所有的東西都塞在一起,程式碼就很容易很亂,也會難以進行維護。
而MVC其實就是把程式負責的每一個部分分開,分別交給一個單位/部門去處理。
像是這裡就會分成一下幾個部分:
- Model 處理資料
- View 處理顯示畫面
- Controller 處理請求
Controller
主要是在處理請求,當請求進入到伺服器的時候會進行分發,將對應的請求發給對應的請求處理函數,去進行處理。
然後controller也要負責上圖各個部分之間的溝通關係
像是一下內容都是controller需要決定的:
- 使用者是否需要先登入 (認證) 才可以看到網頁內容?
- 使用者是否只能閱讀資料,但不能修改或刪除?
- 使用者新增了資料之後,會重新導向至哪個頁面?
*然後對應到flask中的話基本上就是flask中的視圖函數,和視圖處理(或者是路由)
View
因為現在的網頁通常都會是動態網頁,而動態網頁就需要讓網頁的內容可以變化。有時候就可以依賴後端渲染html,以及網頁內容
*通常就是對應到flask中的render_template和templates就是可以通過jinja2引擎完成一些渲染的工作(可以動態的將內容植入html的內容裡面)
Model
通常在伺服器中我們會將數據庫的處理、流程控制和其他的一些功能的實現等部分分開進行處理。
一方面可以讓每一個部分都可以各司其職。
像是controller就不用管要怎麼跟數據庫交互,
或者說model就不用去思考路由的安排和資料的傳輸(會不會有錯之類的),只要專心的處理單一功能或者是跟數據庫有關的內容就可以。
反正model的話主要就是針對一些特定功能的實現、或者是針對數據庫的處理
結語
因為最近我在做專案的過程中,因為專案內容的體量越來越龐大,也開始發現如果和之前一樣把所有的內容都塞在一起就很容易會讓程式碼變得很亂,也會變得難以維護。
所以也開始嘗試一些將程式依照不同的功能進行切分,以及開始研究一些利用物件導向實現的多檔案之間的互通,也因此開始研究一些架構向的內容,開始逐漸要求自己的程式碼可以更加的精簡,也因此開始研究到MVC架構相關的內容
更新2023-1月:
但在現在的情況下我會說MVC看起來很像是上個世代的架構,在效能,應用上以及分工上都會造成很多的問題,然而在現在的時空背景之下,我更推薦的架構會是前後端分離的架構
可以參考這個:
前後端分離