原文:http://www.douban.com/note/512945304/,歡迎建議
這還是篇草稿,介紹怎么學(xué)習(xí)Ruby on Rails的,希望大家提提建議,看看是不是真的對(duì)新手有幫助
====================================
目標(biāo)讀者:完全0基礎(chǔ)的人,Rails Girls,想了解技術(shù)的同學(xué),產(chǎn)品新人
大多數(shù)教學(xué), 都太有條理了。先講概念, HTML是什么,CSS是什么,HTTP請(qǐng)求是什么....但是一次性聽到這么多陌生的概念,很容易暈的。過于抽象了,所以試著寫一篇based-on experience, not concept的介紹,來幫助大家入門Ruby on Rails
Ruby on Rails是做什么的?做網(wǎng)站的,你知道什么是網(wǎng)站(淘寶,知乎..),Rails能做這些,就行了
1. 網(wǎng)站->網(wǎng)頁->按鈕
我們要做的是什么?是網(wǎng)站,那么就直接以知乎為例好了

這樣一個(gè)網(wǎng)站,是怎么和“代碼”,Rails聯(lián)系起來的呢?
這個(gè)太復(fù)雜了,我們不如只看他的首頁(上圖)
就拿這個(gè)頁面來說,他是有3部分構(gòu)成的,HTML,CSS,JS。不過這樣說,依然沒有什么用
我們只拿出其中的一個(gè)按鈕,來解釋這個(gè)概念

我應(yīng)該怎么來寫代碼,來實(shí)現(xiàn)這個(gè)按鈕?
這個(gè)時(shí)候,就要用到HTML了,代碼如此:
<- button class="sign-button submit" type="submit">注冊(cè)知乎</button>
寫好以后,生成的就是按鈕了(如圖)

"靠,可是這也差得太遠(yuǎn)了吧?這兩個(gè)怎么能是一個(gè)東西呢?。?,你可能會(huì)想
但是他的功能,是不是都是一樣的呢?(就是點(diǎn)擊)
這個(gè)時(shí)候,就用到CSS了。(不要在意代碼具體什么意思,知道這是CSS就行了)

(至于JS,可以以后再說)
上面想說的就是,我們看到的網(wǎng)頁,都是用HTML,CSS,JS寫的:HTML來說明這個(gè)內(nèi)容是什么,CSS來讓這個(gè)內(nèi)容變好看(How it looks)。這里說的是按鈕,其實(shí),網(wǎng)頁上的所有這些文字,標(biāo)題等等都是這樣,都是HTML+CSS+JS寫的,如下圖的頭像,鏈接等等

再舉個(gè)例子,上面的指向某個(gè)問題的鏈接
純粹的HTML,以及加上CSS來改變他的樣子之后


小結(jié)一下,上面介紹了什么是HTML,CSS,(JS)
[如果有任何問題,可以直接提問]
2. 難道要重復(fù)寫很多遍嗎?
再看知乎里面的“發(fā)現(xiàn)”頁面,一條一條的“回答”
這些“回答“的結(jié)構(gòu),都是相似的。那是不是,我們的代碼就要這樣一條一條的寫下去呢...?

顯然,這太麻煩了,所以要用到循環(huán),也就是用編程語言(e.g. Ruby)來做 (e.g for loop )
或者,想根據(jù)用戶登錄/未登錄的狀態(tài),來調(diào)整頁面的內(nèi)容


這里,知乎對(duì)于未登錄的用戶,會(huì)有登錄的按鈕;登錄的用戶,則顯示消息,頭像等等。這就用到了編程的東西(if else判斷)
[if else, for loop,這些應(yīng)該還能理解吧?]
3. 怎么實(shí)現(xiàn)注冊(cè)功能?
上面,我們講到了看到的網(wǎng)站是如何由代碼構(gòu)成的
不過,寫到這里,你可能還在想,這不拖拖拽拽就行了嗎?e.g. Dreamwaver, front page等軟件
確實(shí)如此。
不過,我們?cè)趺磳?shí)現(xiàn)“用戶注冊(cè)”的功能呢?
這個(gè)時(shí)候,就不僅僅是”循環(huán)“、”判斷“了。顯然,這時(shí)候,要涉及到更多更為復(fù)雜的邏輯
這個(gè)時(shí)候,就要用到Rail了,我們要用他來實(shí)現(xiàn)——注冊(cè)、登錄的功能,發(fā)帖的功能,提問的功能,點(diǎn)贊的功能等等等
所以,Rails就是用來實(shí)現(xiàn)這些“功能的”。這里不再舉例子了,因?yàn)樘珡?fù)雜,只提幾個(gè)問題,讓大家思考一下,拿論壇發(fā)帖子來說:
我們?cè)趺磳?shí)現(xiàn)“創(chuàng)建”一個(gè)帖子的功能?又怎么“修改”,怎么“刪除”?
這下,應(yīng)該能感到這些功能的復(fù)雜了。不過,現(xiàn)在依然不用深究,只要知道Rails是用來處理這些復(fù)雜邏輯的東西,就行了
(此外,我們有這么多用戶的數(shù)據(jù),帖子的數(shù)據(jù),點(diǎn)贊的數(shù)據(jù),就又牽扯到數(shù)據(jù)庫了)
4.? 小結(jié)
到這里,我們主要介紹了:
(1) 什么是HTML + CSS +JS (顯示網(wǎng)頁)
(2) 什么是Ruby on Rails (復(fù)雜的邏輯功能)
前面的,就是我們所說的前端,后者,就是常稱的后端
如果你下次還有疑問的話,不妨順著這個(gè)思路理一理:
(1) “網(wǎng)頁是由什么構(gòu)成的?”
(2) “怎么實(shí)現(xiàn)注冊(cè)的過程?”
(3) “網(wǎng)站上有這么多數(shù)據(jù),怎么保存?”
“可是我想要設(shè)計(jì)一個(gè)很漂亮的網(wǎng)站誒.....”,那個(gè)是設(shè)計(jì)師做的
對(duì)于一個(gè)網(wǎng)頁來說,設(shè)計(jì)師決定這個(gè)按鈕的顏色,陰影,怎樣才好看
而前端工程師(HTML CSS JS),來負(fù)責(zé)用代碼實(shí)現(xiàn)這些東西(寫具體的代碼)
比如設(shè)計(jì)師說,希望這個(gè)按鈕是藍(lán)色的,那么工程師就根據(jù)這個(gè)要求寫具體的代碼:
【代碼:button {color:blue}】
對(duì)于小的startup來說,可能最開始就直接寫代碼做完了,不會(huì)有專職的設(shè)計(jì)師
5. 那么,我接下來該怎么學(xué)習(xí)Rails呢?
好了,寫到這里,應(yīng)該基本了解什么是Rails了(其實(shí)主要介紹的是前端),接下來的問題可能就是:那我應(yīng)該怎么學(xué)會(huì)Rails,來自己做網(wǎng)站呢?
不過我先寫這么多了,如果有足夠的人需要的話,再繼續(xù)寫吧
注:
原標(biāo)題為Rails in Plain Language,即用淺顯的語言,告訴準(zhǔn)備學(xué)習(xí)Rails的同學(xué)們,Rails到底是什么。不過本文實(shí)際上并沒有談到Rails是什么,更多的寫的是前端。因?yàn)榇蠖鄶?shù)0基礎(chǔ)的同學(xué),并不理解這些,所以先了解一下,我覺得會(huì)有幫助。
Credits: 感謝珊珊同學(xué),白烏鴉,TechiCat的古茜和Vin,李改之,PH翻譯群的修改建議