日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

开始了大概三四天的Rails学习之路

發(fā)布時(shí)間:2025/5/22 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开始了大概三四天的Rails学习之路 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

  最近因?yàn)橐晃粯O光推送朋友,我開始了大概三四天的Rails學(xué)習(xí)之路,最終達(dá)到的水平是可以比較輕松地做出大部分功能,然后自我感覺(jué)可以自如地按照Rails的設(shè)計(jì)思想去思考。由于編程的日益流行,我結(jié)識(shí)了越來(lái)越多非計(jì)算機(jī)系的學(xué)生出于愛(ài)好開始寫代碼,但是其中的大部分人也許在用著一些錯(cuò)誤的學(xué)習(xí)方式來(lái)學(xué)習(xí)編程,為了避免大家再繼續(xù)走彎路,在這篇文章中,我會(huì)介紹下一個(gè)初學(xué)者要如何學(xué)習(xí)Rails。

  1. 為何而學(xué),目標(biāo)是什么?

  今天和朋友在走路時(shí),談到要如何學(xué)習(xí)Rails,我問(wèn)的第一個(gè)問(wèn)題是,你為什么要學(xué)習(xí)Rails,你學(xué)習(xí)編程的目標(biāo)是什么?為何而學(xué),最終希望達(dá)成的結(jié)果是任何學(xué)習(xí)前也許都需要明確的。如果目標(biāo)是學(xué)習(xí)“通用性”程序,無(wú)論是為了處理數(shù)據(jù)、還是為了學(xué)習(xí)語(yǔ)言本身,那么我都建議早點(diǎn)拋棄Ruby,投入到Python的懷抱,雖然任何語(yǔ)言都是圖靈完備的,但是每門語(yǔ)言都有著其最合適的應(yīng)用場(chǎng)景,Ruby幾乎完全依賴Rails存在。OK,這里我們暫且假設(shè)你學(xué)習(xí)的目標(biāo)就是為了可以搭建一個(gè)Web網(wǎng)站,好的,我們繼續(xù)向下說(shuō)。

  2. 學(xué)習(xí)基本的HTML知識(shí)

  這是大部分初學(xué)者學(xué)習(xí)Rails都忽略的一點(diǎn),了解基本的HTML知識(shí)非常重要。HTML并不需要掌握太深?yuàn)W的知識(shí),畢竟我們只需要入門。

  如果是精力允許可以花上1到2天左右時(shí)間快速通讀這本書: 《Head First HTML與CSS》我那位極光推送的朋友就是這么干的。

  讀的時(shí)候不需要對(duì)細(xì)節(jié)過(guò)于在意HTML標(biāo)簽和CSS樣式屬性的細(xì)節(jié),只需要大概了解其中的所有標(biāo)簽,做到腦中有印象,記住一些常用的標(biāo)簽,知道CSS如何作用于HTML即可。復(fù)習(xí)時(shí)隨便打開一個(gè)網(wǎng)頁(yè),對(duì)著頁(yè)面指出這些都分別是什么元素,大腦構(gòu)思下如果自己來(lái)寫這個(gè)網(wǎng)頁(yè)要如何組合標(biāo)簽。

  3. 學(xué)會(huì)使用前端調(diào)試工具

  Rails隱藏了大部分的HTML標(biāo)簽,而使用自己的模板語(yǔ)言,這固然方便開發(fā),但是對(duì)于調(diào)試來(lái)說(shuō)無(wú)外乎增加了一層難度。所以學(xué)習(xí)前端調(diào)試工具就顯得尤為重要,常用的前端調(diào)試工具包括Firefox的firebug,以及Chrome的Developer Tools。這里以Chome的Developer Tools為例,無(wú)須學(xué)習(xí)過(guò)多的知識(shí),了解常用的操作即可。

  知道如何查看對(duì)應(yīng)標(biāo)簽的HTML源碼,然后嘗試去修改一些右側(cè)對(duì)應(yīng)的CSS樣式。

  了解如何查看網(wǎng)絡(luò)請(qǐng)求以及常用的狀態(tài)碼含義,例如200, 304, 500等。

  4. 學(xué)習(xí)常用的數(shù)據(jù)庫(kù)操作

  學(xué)習(xí)Rails之前,我們還是要把基礎(chǔ)的東西都學(xué)會(huì)更合適,最后一步就是數(shù)據(jù)庫(kù)的基礎(chǔ)知識(shí)。在這里,我個(gè)人更為推薦MySQL,原因是資料更多,在自己的本機(jī)上裝一個(gè)MySQL,不用學(xué)的太深入,按照教程了解數(shù)據(jù)庫(kù)的基本概念:庫(kù)、表、行、列。然后按照教程操作,了解如何創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)、創(chuàng)建一個(gè)表,基本的增刪改查即可。也推薦一本入門書吧官網(wǎng)訪問(wèn)極光推送看看:

  也不用全看完,看到第八章就差不多足夠了。畢竟Rails有很完善的數(shù)據(jù)庫(kù)操作封裝,學(xué)習(xí)MySQL更多還是為了調(diào)試。

  5. 學(xué)習(xí)Rails基本理念

  好了,我估計(jì)上面的幾步應(yīng)該花掉了你三天左右的時(shí)間,終于可以開始學(xué)習(xí)Rails了。Rails有著很清晰的學(xué)習(xí)指南,不需要看書的,看這里就足夠了: http://guides.ruby-china.org/getting_started.html 但是這篇更多還是為了有基礎(chǔ)的人準(zhǔn)備,如果沒(méi)有任何語(yǔ)言基礎(chǔ),純粹按照這個(gè)教程往下走會(huì)發(fā)現(xiàn)自己之后毫無(wú)擴(kuò)展性,做其他的項(xiàng)目都很困難。(這也是我發(fā)現(xiàn)很多人的問(wèn)題) 我們不妨同時(shí)在教程中穿插一些練習(xí)。以下只為思路,具體可以自己把控。

  我們先按照他的操作一步步向下走,安裝Rails,使用腳手架創(chuàng)建Blog程序,Hello Rails。OK,進(jìn)行到第四步后,請(qǐng)大家暫時(shí)停下來(lái)。這里我們打印出了Hello Rails,可是請(qǐng)大家先做一個(gè)練習(xí):這里希望能用之前的HTML/CSS知識(shí)做一個(gè)相對(duì)復(fù)雜的Welcome頁(yè)面,然后增加導(dǎo)航欄,并且可以根據(jù)導(dǎo)航跳轉(zhuǎn)到一個(gè)About頁(yè)面。 請(qǐng)大家在這里思考兩個(gè)問(wèn)題:

  1. Rails的路由是如何工作的

  2. Rails的頁(yè)面模板是如何工作的。

  然后我們繼續(xù)跟著教程去做,完成第5步,然后這里我們?cè)俅巫鲆粋€(gè)練習(xí):

  A. 將數(shù)據(jù)庫(kù)從SQLite改成MySQL,并且將數(shù)據(jù)存儲(chǔ)MySQL中。

  B. 每執(zhí)行一步增刪改查的操作都請(qǐng)?jiān)贛ySQL中查看變化

  C. 為文章增加一個(gè)字段,例如作者。然后學(xué)著去做對(duì)應(yīng)修改,運(yùn)行遷移后請(qǐng)查看migrate中的SQL發(fā)生了什么變化。

  D. 在瀏覽器查看由Rails生成的表單被解析成了怎樣的HTML,查看每次發(fā)送一個(gè)提交、修改請(qǐng)求時(shí),發(fā)生了那些網(wǎng)絡(luò)請(qǐng)求。

  E. 在自己手寫的代碼中加入put 打印操作,打印不同的變量,學(xué)會(huì)基本的調(diào)試技巧(例如故意出錯(cuò),然后打印結(jié)果)。例如在下圖語(yǔ)句中間增加 puts article_params

  F. 關(guān)上教程,獨(dú)立操作新增一個(gè)“增加用戶”,“注銷用戶”,“修改用戶”等類似的功能。復(fù)習(xí)之前的操作。

  G. 思考一些問(wèn)題,Rails到底是如何工作,Rails的一些操作分別做了什么,route, controller, view, model到底如何配合工作,generate, rake等一些我們使用過(guò)的命令分別做了什么事情,并且驗(yàn)證確認(rèn)。希望這里大家可以在紙上畫出一張圖,畫出rails的每個(gè)組件的作用、意義,每個(gè)命令都影響了哪些部分。

  繼續(xù)完成剩余部分,第六部分的作用是完成兩個(gè)模型的關(guān)聯(lián)。與上述的做法類似:

  A. 我們每做一步操作要思考這一步到底做了什么?對(duì)數(shù)據(jù)庫(kù)做了哪些操作?

  B. 如果要將文章和作者相關(guān)聯(lián),那么整個(gè)程序要如何修改。

  C. 我們分別看下對(duì)應(yīng)的數(shù)據(jù)庫(kù)都發(fā)生了什么變化?我們不從Rails的角度去思考,單純從數(shù)據(jù)庫(kù)的角度去思考,那么這些表為什么這么設(shè)計(jì)。

  D. 如果要給文章打Tag,Tag和文章的關(guān)系是什么樣,程序如何修改,數(shù)據(jù)庫(kù)變成了什么樣子。

  E. 如果Tag是由用戶打上去的呢?那么程序怎么辦呢?

  F. 我相信上述操作,會(huì)碰到各種各樣的問(wèn)題,善用Google和Stackoverflow,但是解決問(wèn)題是沒(méi)有意義的,要思考為什么這樣就能解決問(wèn)題,然后想清楚后給自己出一個(gè)類似的問(wèn)題讓自己去解決。另外,善于使用puts打印來(lái)調(diào)試問(wèn)題。(雖然很土,但是很好用)

  6. 學(xué)習(xí)Rails的若干問(wèn)題

  A. 學(xué)習(xí)一門語(yǔ)言最重要的是學(xué)習(xí)這個(gè)語(yǔ)言背后的設(shè)計(jì)理念和世界觀。這也是我討厭Rails的一點(diǎn),Rails更加強(qiáng)調(diào)約定大于配置,期望你的一切都按照他的步驟去工作,所以我們?cè)趯W(xué)習(xí)Rails時(shí)最大需要做的轉(zhuǎn)變就是盡量不要去寫代碼,放下心里的那些不安全感,相信他總會(huì)幫你做好的。

  B. 面向?qū)ο蟮脑O(shè)計(jì)架構(gòu)。無(wú)論是Django還是Rails都是完全秉承面向?qū)ο蟮脑O(shè)計(jì)理念。我們?cè)趥鹘y(tǒng)搭建一個(gè)項(xiàng)目時(shí),都會(huì)首先去想設(shè)計(jì)這個(gè)產(chǎn)品功能時(shí)數(shù)據(jù)庫(kù)要設(shè)計(jì)成什么樣,然后我們的SQL語(yǔ)句要如何去寫。 但是Rails拋棄了數(shù)據(jù)庫(kù)的實(shí)現(xiàn)細(xì)節(jié)(這絕不是不寫SQL那么簡(jiǎn)單),例如以上述例子而言,我們只需要明確知道一個(gè)Blog會(huì)有多個(gè)Comment,一個(gè)作者會(huì)有多個(gè)Blog,至于底層如何對(duì)應(yīng)實(shí)現(xiàn)交給Rails框架就好了。所以我們需要拋棄語(yǔ)言細(xì)節(jié),更多從“對(duì)象”的角度去思考整個(gè)關(guān)系。

  C. 不要糾結(jié)于Ruby語(yǔ)法本身,對(duì)于初學(xué)者而言,千萬(wàn)不要糾結(jié)于Ruby語(yǔ)法本身,我相信大部分人至少都考過(guò)計(jì)算機(jī)二級(jí)學(xué)過(guò)C語(yǔ)言,因?yàn)榇蟛糠止δ軣o(wú)外乎增刪改查而已,加起來(lái)的語(yǔ)句也就那么多,所以照著寫,然后遇到功能去查,然后記住足以應(yīng)付大部分問(wèn)題。至于Ruby語(yǔ)法,等到進(jìn)階時(shí)再去讀把。

  D. 一定要想清楚Rails各個(gè)組件的功能,一個(gè)瀏覽器的url請(qǐng)求到最后HTML頁(yè)面展現(xiàn)在用戶面前,都經(jīng)歷了哪些事情,清楚這個(gè)邏輯非常重要。

  E. 反復(fù)練習(xí)。不要貪圖看太多的內(nèi)容,其實(shí)上面那個(gè)入門指南已經(jīng)可以解決80%的問(wèn)題了,請(qǐng)大家就著某個(gè)頁(yè)面功能反復(fù)打磨這個(gè)頁(yè)面,比如增加作者,比如刪除評(píng)論,比如給評(píng)論添加評(píng)論,比如所有評(píng)論的尾部都帶有一個(gè)笑臉等等。

  F. 多打印,打印看各種各樣的變量,故意制造出錯(cuò),知道這樣做會(huì)出錯(cuò)并且猜到出錯(cuò)信息是件很值得做的事兒。這樣才能更了解整個(gè)框架的運(yùn)行原理。

  7. 寫在最后

  我一直不是很贊同Rails Girl , Django Girl這樣的活動(dòng),至少不贊同他們的教學(xué)模式。編程到底是什么?做出來(lái)一個(gè)網(wǎng)頁(yè)?其實(shí)我贊同每個(gè)人都學(xué)一學(xué)編程,但是是因?yàn)榫幊套钪匾氖且环N解決問(wèn)題的能力,知道怎么辦、為什么這么做遠(yuǎn)遠(yuǎn)要比這樣做出來(lái)重要的多。當(dāng)我看到很多人照著教程亦步亦趨地完成一個(gè)看似很炫的功能,我不得不說(shuō),其實(shí)沒(méi)任何意義,我也并不認(rèn)為這樣能培養(yǎng)所謂的興趣。思考遠(yuǎn)遠(yuǎn)比去做有意義的多。

  希望大家編程愉快。

????? 作者:極光推送 飛林沙

轉(zhuǎn)載于:https://www.cnblogs.com/jpush88/p/5169467.html

總結(jié)

以上是生活随笔為你收集整理的开始了大概三四天的Rails学习之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。