--- title: 【RubyOnRails】MVC是甚麼 tags: 文章發布,ROR description: RubyOnRails裡的MVC架構是甚麼 date: 2022/04/09 --- :::info 前情提要:此為初入新手村的超級菜鳥,探索JavaScript與Ruby on Rails的世界,僅供參考~ 敬請指教修正:bow::bow::bow: ::: <center><img src="https://i.imgur.com/Of9BpSe.jpg" width="600px"/></center> <center>Photo by <a href="https://unsplash.com/@joshuafuller?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Joshua Fuller</a> on <a href="https://unsplash.com/s/photos/ruby?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText">Unsplash</a></center> <br /> ## 【Ruby】小白學Rails:MVC是甚麼 在開始主題之前,先稍微認識一下Rails是甚麼吧~ >Ruby on Rails(官方簡稱為Rails,亦被簡稱為RoR),是一個使用Ruby語言寫的 開源Web應用框架,它是嚴格按照<mark>MVC結構</mark>開發,努力使自身保持簡單,使實際應用開發時的代碼更少,使用最少的組態。 Rails 的設計原則包括「不做重複的事」(Don’t Repeat Yourself)和「慣例優於設定」(Convention Over Configuration)。-[Ruby on Rails (wiki)](https://zh.wikipedia.org/wiki/Ruby_on_Rails) ### Ruby on Rails - 不是一種程式語言,是一種用Ruby做出來的框架/套件 - 是一種網站開發框架 - 發明人:David Heinemeier Hansson - 2004年首次公開發表 - 別稱ROR framework 框架:制定一套規範或規則,大家在這規範下工作 網站開發框架=專門為網站開發所設計的工具包 #### 設計原則 - <mark>DRY</mark> 不做重複的事Don't Repeat Yourself 透過物件導向的方式或是其他寫法讓東西可以重複使用 - <mark>COC</mark> 慣例優於設定 Convention Over Configuration 如果可以順著Rails的慣例撰寫程式碼,會精簡很多 順我者生,逆我者亡 ---- 現在我們知道Rails的目的是讓開發者可以更容易進行網站開發,此外,透過建立MVC架構與原則,減少開發中需要互相串聯而耗費的力氣(例如:文件命名方式等) 那我們就進入主題,來看看甚麼是MVC結構吧~ ### MVC結構  <center><font size="3px" color="#aaa">資料來源:五倍紅寶石 5xruby on 為你自己學 Ruby on Rails</font></center> <br /> #### 流程圖步驟說明: 1. 當使用者輸入網址按下Enter之後會遇到<mark>**Route**</mark> Route像是<u>入口導覽員</u>的腳色,告訴對方下一步應該要怎麼做 :mag_right: Route阿桑是誰? 2. 去找<mark>**Controller**</mark>,調相關資料 3. controller就像是到三樓一樣,會有很多櫃台<mark>**action**</mark> - controller本身是個class - action就是方法method 4. **到某一個櫃台(action)後,根據要的資訊,到相對應的<mark>**Model**</mark>調相關的資料出來**。會根據需求看是否需要透過model調資料,可能需要可能不需要 <font color="#f00">注意!!model本身不是資料庫</font> 5. **Model會到<mark>資料庫</mark>調資料** model像翻譯蒟蒻,但它不是資料庫,它用資料庫的查詢語言向資料庫調資料 :mag_right:model和資料表(table)的關係? 6. 資料庫找到的資料會再回傳給model 7. **model會再回傳給action**,但回傳的資料本身是個roll data,是一般使用者看不懂的資料 8. **action再將拿到的資料再去搭配畫面==View==** 9. **View將畫面組成一般人看得懂的資料後回傳回去** 以上就是MVC架構的基本流程。 因為系統越做越複雜,所以將資料分類,Controller像是控制中心,將流程控制放於此,指揮Model和View。因此將資料邏輯全部放在model,流程控制放在controller,畫面相關放在View,便利於前後端分工。形成一套框架規範。 - **Model**: 負責與資料庫溝通,處理資料庫相關的程式碼/資料邏輯 - **Controller**: 負責控制流程,處理資料流向 - **View**: 負責畫面的呈現,HTML放這,會回傳HTML的方法(method) >**Route**是第一線處理request的人,很重要唷!!!也是讓Controller知道要處理哪個頁面。類似網址路徑,但它並不是網址(URL)本身,而是定義「網址」的「連線方式」以及「行為」的組合。之後我們會再談談R+MVC裡面的**Route 門口阿桑**是誰吧~ MVC的特點就是「控制歸控制,資料歸資料,畫面歸畫面」。 基本的邏輯會是 「Controller 請 Model 處理資料,並設計資料流向,再讓 Views 被動接受資料並呈現畫面。」 <br /> **框架優點** 1. <mark>提供慣例</mark>,標準統一,較不會有銜接問題,方便管理,減少花在設定上的力氣,把更多精力放在開發本身。 2. 擴充性高 3. 使程式結構更直覺,開發快速 4. 有利於團隊分工 **框架缺點** 1. 要學新的語法 2. 需要嚴謹的系統規劃 3. 系統結構複雜,不適合小型專案 4. 系統肥大、效能降低 --- :::spoiler **參考資料** - [Model、View、Controller 三分天下](https://railsbook.tw/chapters/10-mvc)(為你自己學 Ruby on Rails 高見龍) - [Routes](https://railsbook.tw/chapters/11-routes)(為你自己學 Ruby on Rails 高見龍) :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up