[爆卦]ruby on rails缺點是什麼?優點缺點精華區懶人包

為什麼這篇ruby on rails缺點鄉民發文收入到精華區:因為在ruby on rails缺點這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者Y78 (Y78)看板Soft_Job標題Re: [心得] 給網站初學者的建議:用RoR非常辛苦...



很同意原 PO 的看法,想就自己的經驗分享一下想法

首先,有人提出的疑問是:「你拿框架跟程式語言比?」
框架跟程式語言為什麼不能比?只是要看比的是什麼而已
Ruby on Rails(以下簡稱 Rails) 的目的是開發網站,php 的目的也是開發網站

「Ruby on Rails 跟 PHP 在開發網站上,PHP 是比較適合新手的」
我想這應該就是原 PO 那篇想要表達的想法
前提是兩者的目的同樣是開發網站,我不認為這樣有何不妥

回歸到正題,我自己也認為 Ruby on Rails 對於新手「極度不友善」
先來說說我自己初學的時候(沒有任何寫網頁基礎)碰到 Ruby on Rails 的經驗

當時自己看著幾篇線上的教學加上買書來看,就跟著範例做
很快的,一個網站就出現了!而且有基本的 CURD 功能
可是問題是,我不知道怎麼會這樣
為什麼我這個函式明明什麼都沒寫,就可以產生內容?
我又沒有明確表示說這個路徑要連結到哪個地方,怎麼會這樣?

這就是 Ruby on Rails 最強大的武器之一:Convention
慣例優於配置(convention over configuration)一直是主打的點
因為什麼都幫你弄好了,所以你幾乎一行 code 都不用寫
接著就是你要去記一堆慣例
例如說 RESTful 架構,哪個 action 對應到哪一個 controller
哪一個 contoller 又對應到 models 裡面的哪個動作

Ruby on Rails 可以快速做出一個網站,這是無庸置疑的
但是如果你要修改、增加新功能的話,對新手來說絕對不是很好上手
在學會這些之前,他必須要先了解所有跟 Rails 這個框架有關的東西
這些原 PO 之前有提到了,像是檔案結構、migration、helper 等等

可是這些東西不管學哪一個框架都會用到,所以也無法避免
這也不是 Rails 的錯,因為我跟原 PO 一樣
認為「Rails 本來就不是給初學者用的」

剛開始學的時候會非常,非常辛苦
Rails 的學習曲線剛開頭就是超級無敵陡峭,PHP 則是平滑許多

我認為在學習許多事情的時候
你要知道「為什麼會是現在這樣」,才會有更多的了解
你必須對演變的過程略知一二

例如說:為什麼 Ruby on Rails 會比較難上手?
或是,為什麼程式語言需要一個框架?

可以先想到沒有框架的時候,像是 PHP
很快、很好上手,但是當網站架構變大的時候,缺點就顯露出來了
沒有固定的規則、每個 PHP 混雜一堆程式邏輯跟 html
這個時候你就知道說為什麼要有 view,要有 template 這種東西了
因為 html 如果跟程式碼寫在一起很難維護,所以我們需要 view 來做這件事

或是,為什麼會有 RESTful 架構?
先想一下沒有這個架構之前,假設我要開發一個部落格網站
我的 URL 可能會是
/view.php?id=123
/edit.php?id=123
/createArticle.php?id=123
/removeArticle.php?id=123

一百個人有一百種 URL 的定義方法,這就會讓團隊合作變得困難
如果讓這些命名方式統一,大家都一樣,就沒有這些問題了
於是就開始用 RESTful 架構來設計網站了

再舉兩個例子,第一個是 design pattern
如果你對程式初學者,或甚至是 junior 教設計模式,他可能很無感
他聽的懂工廠模式在幹嘛、裝飾者模式在幹嘛,但是他不知道可以怎麼用
因為他根本不知道為什麼需要這些

可是當他自己寫出難以維護、耦合性很高的程式碼,每天 debug 到崩潰的時候
有一位資深工程師說:你看,你這個可以改成工廠模式喔,就不用一直複製貼上了
他才恍然大悟:阿!原來工廠模式是這樣用的!

design pattern 本來就是軟體工程不斷演進才出現的東西
因為工程師發現這些方法比較好,所以才歸納出這些
而不是從一個憑空出現這些,這些都是前人的慘痛經驗阿!
可是當你沒有那些慘痛經驗的時候,你就很難了解為什麼需要這些東西

最後一個例子,依舊很夯的 React
你找一個新手然後開始教他 React,先從 ES6 開始,跟他說這個很好用喔
接著要跑起來的時候教他用 Babel,跟他說沒這個不能跑,這個很好用喔
Debug 的時候用 webpack,跟他說這個很好用喔,可以自動載入

初學者:我只是想學個網頁,怎麼那麼多東西要學?

同場加映這篇:前端的對話
http://andyyou.logdown.com/posts/290465-essay-the-front-of-the-dialogue


結論就是,
新手要學 Ruby on Rails 當然可以,但最好邊學邊了解這些設計「為什麼會是這樣」
才不會學了上層的東西,底層的東西一概不知,基礎很不穩

但我還是推薦初學者不要挑戰 Ruby on Rails,而是從 PHP 開始
因為 PHP 相較之下非常適合初學者,當你了解 PHP 基本功能之後
再考慮重新去學習 Ruby on Rails,你一定會有更多的體會!

最後附上我自己認為比較好的學習流程:
1. 基本的 html, css 這些你就編輯器打一打、存檔就可以看到結果了
2. 基本的 javascript + jquery,一些簡單的語法就可以操控你的網頁
3. 用 Scratch 教程式語言基礎,很推薦這套
4. 用 browser 教網頁基礎
開 chrome dev tool 讓他看看:request -> server -> response -> render 這段流程
5. 用 php 教如何寫網頁

這些都會了之後,再選擇你想往前端還是後端
前端的話就去找:scss/sass, RWD, Angular, React, Vue 等等
後端話就去找:Laravel, Ruby on Rails 等等

至少先有基礎的知識,之後再學其他東西的時候,才不會那麼不知所措

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.67.187
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1455938166.A.730.html
※ 編輯: Y78 (61.216.67.187), 02/20/2016 11:21:45
※ 編輯: Y78 (61.216.67.187), 02/20/2016 11:22:45
uid88: 說好(以下簡稱 Rails),結果還是用Ruby on Rails比較多 02/20 11:51
Elohim123: 02/20 13:51
chan15: 為什麼不是 PHP 學一學去玩 Laravel? 02/20 21:42
Mtcat: 02/20 22:44

你可能也想看看

搜尋相關網站