---
# System prepended metadata

title: 12th 鐵人賽 (Day_03) MVC架構？(1)
tags: [12th 鐵人賽]

---

---
title: 12th 鐵人賽 (Day_03) MVC架構？(1)
tags: 12th 鐵人賽
--- 
# 12th 鐵人賽 (Day_03)


相信各位常常聽到MVC架構，在 Rails 裡利用Model、View、Controller來處理從使用者那邊打過來的要求。簡易圖片為下：

![](https://i.imgur.com/8WnYfzO.png)

當使用者點下了網頁的一個連結後：
1. 相當於像sever發出了一個**請求（request）**
2. routes檔案裡所設定的路徑，去找到相對應的Controller
3. Controller根據身上的action把你指到相對應的頁面(View)；或是直接請Model更新資料
4. 頁面上面所要呈現的資料，就交由Model幫你從資料庫裡撈出來，再傳回給View
6. 交由Controller，最後再一次回應（response）給使用者。

上面就是Rails裡的MVC架構的實作方法，若用點菜來做個簡單的比喻：

當我點了一盤菜：
1. 相當於我發了一個請求，店員會將請求送往廚房。
2. 廚房裡的大廚根據我點的菜，像學徒們下達命令
3. 請學徒甲負責去煮出我要的菜。
4. 學徒乙幫忙去拿取所需要的材料，交給學徒甲
5. 學徒甲煮完後交由大廚，大廚請店員上菜


若我們把上面兩個說明結合起來：
1. 店員 ＝ Server或routes
(決定菜單是送往廚房，而不是外面的飲料吧台區)
2. 大廚 ＝ Controlle
(將請求分配下去)
3. 學徒甲 ＝ View
(負責做出菜餚)
4. 學徒乙 ＝ Model
(負責去拿取材料(資料))

不知道這樣的比喻對於大家有沒有更淺顯易懂了呢？若有其他問題，歡迎在下面留言。

不過話又說回來，到底為什麼要搞得那麼麻煩呢？
在學 Rails 之前，我很認真的以為一個頁面就只有一個檔案呢!XD
明天就來解答使用MVC的好處吧！
