作者Y78 (Y78)
看板Soft_Job
标题Re: [心得] 给网站初学者的建议:用RoR非常辛苦
时间Sat Feb 20 11:16:04 2016
很同意原 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://webptt.com/cn.aspx?n=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
1F:推 uid88: 说好(以下简称 Rails),结果还是用Ruby on Rails比较多 02/20 11:51
2F:推 Elohim123: 02/20 13:51
3F:推 chan15: 为什麽不是 PHP 学一学去玩 Laravel? 02/20 21:42
4F:推 Mtcat: 02/20 22:44