都說ROR架構的特點是快速開發(fā)梢什,不少書中都以5分鐘創(chuàng)建一個簡單的博客系統(tǒng)來作為例證,體現(xiàn)ROR驚人的開發(fā)效率朝聋。但我覺得這個例子顯得有些片面嗡午,因為這至多只能作為新手上手時的體驗和示范,實際項目中冀痕,scaffold自動生成的代碼大多是不可用的(但其默認的restful架構還是需要遵循的)荔睹,我們的實際需求通常遠高于自動生成的代碼所能提供的功能。
下面我想結合實際工作中的一些體會言蛇,簡單闡述一下我對ROR為何能實現(xiàn)快速開發(fā)的理解:
1.MVC架構——ROR嚴格遵循MVC架構(在此我還想再次鄙視一下active_admin這個反人類的gem)僻他。這種分離式的架構,讓代碼的可重用性大大增強腊尚。如果還能充分理解并實踐“瘦controller肥model”的理念并且合理規(guī)劃命名空間吨拗,那整個model文件都能具備高度的重用性和可移植性。例如我在上一個項目中婿斥,在base命名空間下有一個province的model劝篷,model里寫了一些關聯(lián)、驗證民宿、枚舉娇妓、scope、實例方法活鹰、類方法哈恰,那作為一個很多項目都會調用到的model,在以后的項目中志群,我只要將這個model整個復制做來着绷,遷移文件已復制過來,執(zhí)行一下遷移赖舟,就OK了蓬戚,以前努力建設的工作成果,瞬間為下一個項目提速宾抓。試想如果一個新項目的基礎model(一般此類model不需要視圖文件子漩,也很少會用到其控制器)都是采用這種方式來搭建豫喧,那可能一兩個小時就能完成一個新項目的基礎框架搭建工作。
2.眾多可擴展的gem包以及方便的安裝步驟——眾所周知幢泼,github上有N多知名的rails的gem包紧显,這些gem包安裝方便(寫進gemfile之后bundle),種類豐富缕棵,可實現(xiàn)各類常用的功能孵班。調用這些gem包,可省去大量自己手寫的工作量招驴,并且實現(xiàn)的功能應該遠比自己手寫要完善和專業(yè)篙程。拋開jquery這類必用的知名大型gem不談,即便是一些微小的功能别厘,比如說方便實現(xiàn)樹形結構的acts_as_tree這個gem虱饿,也能大幅提升開發(fā)效率,原來我們需要自己定義父類触趴、子類氮发、同輩等一下必要的實例方法或者類方法,現(xiàn)在只要求model中具備parent_id字段冗懦,然后在model簡單加一句acts_as_tree(有關acts_as_tree的用法爽冕,可以參考我之前寫的一篇技術分享:http://blog.csdn.net/tcj1028/article/details/45936783),上述一些你能想到的以及你還沒想到的功能披蕉,都能直接調用了颈畸。如果能數量掌握一些常用gem的用法,那在架構一個新項目的時候嚣艇,效率會有飛躍性的提升承冰。
3.ruby語言本身的特性以及rails框架自帶的基礎功能——ruby是一門面向對象的編程語言,當你適應了ruby的面向對象編程方式之后食零,會覺得寫代碼不是機械的遵從某種語言架構來套用,而是一種自然自由的表達方式寂屏,就好像針對一個人物贰谣,在描寫他自身的各種能力,敘述在他身上(以及與他有關的其他人身上)發(fā)生的一些事情迁霎。rails框架是一個完全使用ruby編寫的框架吱抚,框架本身就已經提供了豐富的功能,比如知名的active_record類考廉。利用這些功能秘豹,你可以輕松的操作數據庫,進行增刪改查等基礎操作昌粤。其對象關系映射(ORM)的與ruby本身面向對象的編程思路高度統(tǒng)一既绕。兩者結合啄刹,會讓編寫代碼更順暢和易于理解,從而提升了ROR項目的開發(fā)效率凄贩。
以上就是我個人對ROR快速開發(fā)的一些理解誓军,希望能給ROR的初學者一些啟發(fā)和幫助,也歡迎各位補充疲扎、指正昵时。