原文:http://www.douban.com/note/512945304/,歡迎建議
這還是篇草稿,介紹怎么學習Ruby on Rails的,希望大家提提建議,看看是不是真的對新手有幫助
====================================
目標讀者:完全0基礎的人,Rails Girls,想了解技術的同學,產品新人
大多數教學, 都太有條理了。先講概念, HTML是什么,CSS是什么,HTTP請求是什么....但是一次性聽到這么多陌生的概念,很容易暈的。過于抽象了,所以試著寫一篇based-on experience, not concept的介紹,來幫助大家入門Ruby on Rails
Ruby on Rails是做什么的?做網站的,你知道什么是網站(淘寶,知乎..),Rails能做這些,就行了
1. 網站->網頁->按鈕
我們要做的是什么?是網站,那么就直接以知乎為例好了
這樣一個網站,是怎么和“代碼”,Rails聯系起來的呢?
這個太復雜了,我們不如只看他的首頁(上圖)
就拿這個頁面來說,他是有3部分構成的,HTML,CSS,JS。不過這樣說,依然沒有什么用
我們只拿出其中的一個按鈕,來解釋這個概念
我應該怎么來寫代碼,來實現這個按鈕?
這個時候,就要用到HTML了,代碼如此:
<- button class="sign-button submit" type="submit">注冊知乎</button>
寫好以后,生成的就是按鈕了(如圖)
"靠,可是這也差得太遠了吧?這兩個怎么能是一個東西呢!!",你可能會想
但是他的功能,是不是都是一樣的呢?(就是點擊)
這個時候,就用到CSS了。(不要在意代碼具體什么意思,知道這是CSS就行了)
(至于JS,可以以后再說)
上面想說的就是,我們看到的網頁,都是用HTML,CSS,JS寫的:HTML來說明這個內容是什么,CSS來讓這個內容變好看(How it looks)。這里說的是按鈕,其實,網頁上的所有這些文字,標題等等都是這樣,都是HTML+CSS+JS寫的,如下圖的頭像,鏈接等等
再舉個例子,上面的指向某個問題的鏈接
純粹的HTML,以及加上CSS來改變他的樣子之后
小結一下,上面介紹了什么是HTML,CSS,(JS)
[如果有任何問題,可以直接提問]
2. 難道要重復寫很多遍嗎?
再看知乎里面的“發現”頁面,一條一條的“回答”
這些“回答“的結構,都是相似的。那是不是,我們的代碼就要這樣一條一條的寫下去呢...?
顯然,這太麻煩了,所以要用到循環,也就是用編程語言(e.g. Ruby)來做 (e.g for loop )
或者,想根據用戶登錄/未登錄的狀態,來調整頁面的內容
這里,知乎對于未登錄的用戶,會有登錄的按鈕;登錄的用戶,則顯示消息,頭像等等。這就用到了編程的東西(if else判斷)
[if else, for loop,這些應該還能理解吧?]
3. 怎么實現注冊功能?
上面,我們講到了看到的網站是如何由代碼構成的
不過,寫到這里,你可能還在想,這不拖拖拽拽就行了嗎?e.g. Dreamwaver, front page等軟件
確實如此。
不過,我們怎么實現“用戶注冊”的功能呢?
這個時候,就不僅僅是”循環“、”判斷“了。顯然,這時候,要涉及到更多更為復雜的邏輯
這個時候,就要用到Rail了,我們要用他來實現——注冊、登錄的功能,發帖的功能,提問的功能,點贊的功能等等等
所以,Rails就是用來實現這些“功能的”。這里不再舉例子了,因為太復雜,只提幾個問題,讓大家思考一下,拿論壇發帖子來說:
我們怎么實現“創建”一個帖子的功能?又怎么“修改”,怎么“刪除”?
這下,應該能感到這些功能的復雜了。不過,現在依然不用深究,只要知道Rails是用來處理這些復雜邏輯的東西,就行了
(此外,我們有這么多用戶的數據,帖子的數據,點贊的數據,就又牽扯到數據庫了)
4.? 小結
到這里,我們主要介紹了:
(1) 什么是HTML + CSS +JS (顯示網頁)
(2) 什么是Ruby on Rails (復雜的邏輯功能)
前面的,就是我們所說的前端,后者,就是常稱的后端
如果你下次還有疑問的話,不妨順著這個思路理一理:
(1) “網頁是由什么構成的?”
(2) “怎么實現注冊的過程?”
(3) “網站上有這么多數據,怎么保存?”
“可是我想要設計一個很漂亮的網站誒.....”,那個是設計師做的
對于一個網頁來說,設計師決定這個按鈕的顏色,陰影,怎樣才好看
而前端工程師(HTML CSS JS),來負責用代碼實現這些東西(寫具體的代碼)
比如設計師說,希望這個按鈕是藍色的,那么工程師就根據這個要求寫具體的代碼:
【代碼:button {color:blue}】
對于小的startup來說,可能最開始就直接寫代碼做完了,不會有專職的設計師
5. 那么,我接下來該怎么學習Rails呢?
好了,寫到這里,應該基本了解什么是Rails了(其實主要介紹的是前端),接下來的問題可能就是:那我應該怎么學會Rails,來自己做網站呢?
不過我先寫這么多了,如果有足夠的人需要的話,再繼續寫吧
注:
原標題為Rails in Plain Language,即用淺顯的語言,告訴準備學習Rails的同學們,Rails到底是什么。不過本文實際上并沒有談到Rails是什么,更多的寫的是前端。因為大多數0基礎的同學,并不理解這些,所以先了解一下,我覺得會有幫助。
Credits: 感謝珊珊同學,白烏鴉,TechiCat的古茜和Vin,李改之,PH翻譯群的修改建議