前面講了Ruby的介紹,再來是介紹我們的主角 Rails
Rails 是一種「網頁開發的框架」,運用 Ruby 撰寫,因此通常大家會直接用 Ruby on Rails (RoR) 來稱呼。
什麼是網站開發框架(Web framework)?
網頁開發框架就像是整理好的一堆資料夾與一些預先為網頁開發寫好的小工具們,你只需要把一些 Code 在框架中補齊,就可以簡單快速的做出網站後端需要的基本功能。
以餐廳為例子來解釋,Ruby 是後端語言,負責後台的出餐,則 Rails 就像是一台自動料理機,讓你不需要將食物從頭處理到尾,只需要負責簡單的調味、供應食材、設定要煮幾分鐘等等。
作為一個輔助後端語言 Ruby 的框架,Rails 的兩個主要的設計哲學是:
1 不做重複的事
2 慣例優於設定
什麼是 MVC?
MVC模式(Model–view–controller)是軟體工程中的一種軟體架構模式,把軟體系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller)。
MVC把這些定義落實到專案上,在不改動底層運作的情況下,屬於Controller的Class就該放到Controllers的資料夾、屬於頁面呈現的就放到Views資料夾,且預設也有一個Models的資料夾給你放Model,有了這些規範後,讓習慣來代替配置,你接手別人的MVC專案後, 所有人的開發方式基本上都會依照這個規範去落實,降低維護的成本。
目的:
整個專案拆解成 MVC 結構之後,雖然檔案變多、變分散了,但也因此更容易進行分工,當團隊人數增加,每個人可以在各自負責的部份進行開發,較不易互相衝突、干擾。
以下圖來解說什麼是MVC
1.當有使用者輸入網址,連到你的網站的時候,第一關會遇到的是路徑對照表(Route,檔案config/routes.rb)。在 Controller 上通常會有一個以上的 Action,這些 Action 是一般 Ruby 裡的方法(method)而已。透過路徑對照表,找到了對應的 Action,這個 Action 會決定要做什麼事。
2.舉例個子來說,在這個 Action 可能會需要查閱「目前所有的商品列表」,接著它就會去請 Model 幫忙查資料。
Model 本身並不是資料庫,但它可以幫你把你跟 Model 說的「人話」轉成資料庫看得懂的資料庫查詢語言(Structured Query Language,簡稱 SQL)。
3.透過 SQL,Model 可以跟資料庫取得你想要的資料
4.Controller/Action 拿到資料了,但目前這包東西還沒美化、整理過,還不適合給使用者看,所以 Controller/Action 還需要跟 View 借一下畫面,讓資料更適合使用者閱讀。
5.Controller/Action 把資料跟 View 的畫面組合,最後呈現的就是我們看到的網頁
整理一下重點:
Model : 資料的管理(例如與資料庫的溝通) , 演算法邏輯(商業邏輯) , 物件結構定義
View : 呈現給使用者看、操作的介面
Controller : 依據傳入的資料該怎麼運作、程式流程的控制、該回傳給使用者什麼資料等