什么是Ruby on Rails作者:Curt Hibbs 日期: 譯者:吳海燕 日期: Ruby on Rails Ruby on Rails是一套用Ruby寫(xiě)的Web應(yīng)用程序框架,Ruby是一個(gè)與Python,Smalltalk和Perl相似的動(dòng)態(tài)語(yǔ)言。 本文內(nèi)容:從 我并不教你如何去用Rails來(lái)寫(xiě)Web程序,如果你想那樣的話(huà),你應(yīng)該去看看Rolling with Ruby on Rails。這篇文章只是講述了Rails的各個(gè)特性。 高生產(chǎn)力Ruby on Rails并沒(méi)有引入什么新的功能,以前的Web框架都已經(jīng)很好的具備各種需要的功能,那么Rails是靠什么東西取勝的呢?區(qū)別就在于Ruby是如何的來(lái)實(shí)現(xiàn)的。當(dāng)你花了數(shù)天而不是數(shù)周實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的Web程序,花了幾周而不是幾個(gè)月實(shí)現(xiàn)了一個(gè)復(fù)雜的Web程序的時(shí)候,你就會(huì)注意到這一點(diǎn)了。 當(dāng)然了,如果開(kāi)發(fā)出來(lái)的程序最后復(fù)雜而且難以維護(hù)的話(huà),那么我們剛剛注意到的優(yōu)點(diǎn)也就毫無(wú)意義了。幸運(yùn)的是,Ruby on Rails促使人們使用好的編程習(xí)慣,這也就導(dǎo)致編寫(xiě)出來(lái)的代碼結(jié)構(gòu)好而且容易維護(hù)。 如果ruby沒(méi)有深度的話(huà)――也就是說(shuō),如果你嘗試做任何稍微復(fù)雜一些的Web程序的時(shí)候,你發(fā)現(xiàn)遇到了障礙,由于Rails固有的一些缺陷導(dǎo)致了無(wú)法完成那樣的程序。不過(guò)一些資深的開(kāi)發(fā)人員已經(jīng)嘗試并且報(bào)道了Rails不存在這樣的缺陷,比如,Tomcat,Ant和Servlet API的作者James Duncan Davidson最近寫(xiě)道: Rails is the most well thought-out web development framework I‘ve ever used. And that‘s in a decade of doing web applications for a living. I‘ve built my own frameworks, helped develop the Servlet API, and have created more than a few web servers from scratch. Nobody has done it like this before. That‘s not to say they got it all right. It‘s by no means "perfect". I‘ve got more than a few nits and picks about how things are put together. But "perfect" isn‘t the point. The point is that it gets you up and going fast and has plenty of depth to keep you going. And Rails does that very well. 如果沒(méi)有足夠的證據(jù)的話(huà),你也許很難相信他所說(shuō)的話(huà)。不過(guò)幸運(yùn)的是,你不需要相信我的(或者任何其他人的)話(huà),你可以自己用一天或者更短的時(shí)間來(lái)看看Ruby on Rails tutorial并且做一個(gè)適當(dāng)?shù)?/SPAN>Web程序出來(lái)。畢竟,眼見(jiàn)為實(shí)!如果你不想要自己去嘗試,那么你也可以看new Rails video,看看別人是怎么做到的。 Rails是怎么做到這些的?就好像一個(gè)好的藥方一樣,Rails通過(guò)整合適量的正確手段來(lái)達(dá)到前面所說(shuō)的樣子。下面就是Rails為什么能夠如此高效的一部分原因 RubyRails的很多強(qiáng)大的功能都是來(lái)自于Ruby的。Ruby獨(dú)特的設(shè)計(jì)使得我們可以輕松的創(chuàng)建domain-specific languages 和做metaprogramming。 完全的MVC架構(gòu)Rails是一個(gè)MVC(model,view,controller)的框架,他提供了所有的這些層次并將他們無(wú)縫的結(jié)合在了一起。其他的一些框架一般都只是提供了一部分的解決方案,需要開(kāi)發(fā)者自己去整合多個(gè)框架到一個(gè)應(yīng)用程序里面去。比如說(shuō),一個(gè)Java開(kāi)發(fā)人員就需要使用Hibernate,Struts和Tiles來(lái)實(shí)現(xiàn)MVC的目標(biāo)。 約定高于配置約定高于配置意味著XML配置文件的終結(jié)—在Rails里面,沒(méi)有任何的xml配置文件!代替xml的是使用一些簡(jiǎn)單的約定,讓程序可以通過(guò)反射和查找來(lái)獲得所需要的配置信息。比如,Rails使用反射來(lái)自動(dòng)的將Ruby對(duì)象映射到數(shù)據(jù)庫(kù)表里面去。你的程序代碼和正在運(yùn)行的數(shù)據(jù)庫(kù)里面已經(jīng)包含了Rails所需要的一切。 更少的代碼通過(guò)遵循一些簡(jiǎn)單的編程約定不僅僅可以減少配置文件的使用,同時(shí)還可以讓Rails自動(dòng)的去處理很多的底層的細(xì)節(jié)問(wèn)題,這意味著你可以寫(xiě)更少的代碼來(lái)實(shí)現(xiàn)你的程序。保持你的代碼的精簡(jiǎn)意味著更快的開(kāi)發(fā)速度和更少的bug,它可以讓你的代碼更加容易理解,維護(hù)和擴(kuò)展。 自動(dòng)生成Rails通過(guò)運(yùn)行時(shí)反射和元程序來(lái)減少本來(lái)你必須要編寫(xiě)的代碼。你通??梢酝ㄟ^(guò)內(nèi)置的自動(dòng)生成腳本來(lái)生成一些原本需要通過(guò)手工編寫(xiě)的代碼,這就讓你可以集中精力在你的業(yè)務(wù)上面,而不是在處理一些無(wú)關(guān)的細(xì)節(jié)方面。 Zero turnaround time一般的Web程序的開(kāi)發(fā)都需要經(jīng)過(guò)一下幾個(gè)步驟:配置,編譯,部署,重設(shè)和測(cè)試。這非常的耗費(fèi)時(shí)間,Rails開(kāi)發(fā)環(huán)境不需要經(jīng)過(guò)這些步驟。你做了一個(gè)修改,然后你就可以看到這個(gè)修改的效果了。我們無(wú)法描述這對(duì)于提高生產(chǎn)力會(huì)有多大的幫助,但這確實(shí)很有幫助。 ScaffoldingRails可以自動(dòng)創(chuàng)建完整的用來(lái)操作數(shù)據(jù)庫(kù)表的CRUD(Create,Retrieve,Update和Delete)操作和相應(yīng)的視圖。這個(gè)功能可以讓你很快的就可以實(shí)現(xiàn)用來(lái)操作數(shù)據(jù)庫(kù)表的功能。隨著開(kāi)發(fā)的進(jìn)行,你可以慢慢的使用自定義的CRUD方法和視圖來(lái)代替自動(dòng)生成的程序,從而讓程序更加美觀,更加的功能強(qiáng)大。 |
|
|