iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
2
自我挑戰組

關於 Ruby on Rails 的那些事系列 第 11

Day 11 - MVC 大架構

不知不覺已經過了三分之一了,來到第 11 天就開始有些焦慮,「天啊,我的side project還沒有開始想內容呢」,先給大家一個預防針,不要太期待後面的專案實作 (可能邊做邊發現錯)

話不多說,還記得昨天的圖嗎?不記得也沒關係,我再放一次

昨天把 routers 比喻為工讀生,而今天要說的是 routers 指引路徑之後,後面給誰接手做事呢?主角就是 MVC 三大角色,分別為 Model、View、Controller,麻煩大家再上下對照兩張圖 (應該比較容易懂...吧)

如果再以昨天故事來解釋,行政大樓就會對應 Controller,裡面的校友中心、學務處就會是action、接著人員會藉由電腦來調取資料,拿到資料後輸出一份課程列表的文件或學生證到我的手上。

用上圖來解析一下每個步驟:
step1 用戶發送一個請求,希望取得某項資源
step2 routers 接到你的請求,找你需要的 controller
step3 判斷找哪個 action 做事情
step4 action 為了取得相關資料,跟 model 要資料
step5 model 幫忙將人類語言翻譯給資料庫看得懂的語言
step6 資料庫找到資料後交回給 model
step7 model 把這包資料傳給 controller
step8 controller 需要把一堆文字進行美化後才可以給使用者,於是交代 view 去包裝
step9 view 包裝完後就把文件給 controller 處理後續

最後簡單統整:

  • Controller
    • 接受請求
    • 驗證請求
    • 判斷要轉發請求給哪個 model
    • 判斷要轉發請求給哪個 view
  • Model
    • 保存狀態
    • 執行商業邏輯
  • View
    • 包裝回應畫面

今天講的是大架構,後面幾天會來說說 model、view、controller 如何相互配合囉~

參考資料:
為你自己學Ruby on Rails
MVC 與 rails

學無止盡,每天都要進步一點點!


上一篇
Day 10 - Q:你怎麼找到我的? A:Routes 告訴我了。
下一篇
Day 12 - Model 關聯性
系列文
關於 Ruby on Rails 的那些事30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

2
taco_maruko
iT邦新手 5 級 ‧ 2020-09-28 07:57:31

之前自學時,從其它書本的內容試著理解MVC,仍是一知半解!!
看完你的「文章與圖解」,真的有認識MVC了!!

Mei iT邦新手 5 級 ‧ 2020-09-28 12:42:51 檢舉

謝謝你的回饋,很高興你可以看懂 : )
我還只是個新手,如果想更深入了解,文章後面有龍哥的書連結,寫的也很容易理解喔!

我要留言

立即登入留言