首頁  >  文章  >  後端開發  >  Rails與Node.js/PHP/Python等對比

Rails與Node.js/PHP/Python等對比

巴扎黑
巴扎黑原創
2016-11-11 09:58:581260瀏覽

首先,這不是比較貼,語言和框架能比較嗎?

其次,我也沒有全部用過 

本文唯一的目的在於提醒自己(還有正在瀏覽的你)真正所需要關注的究竟是什麼 

PHP 
PHP是simple but dirty的語言,simple是指的語言,simple是指學習曲線低,主要是因為有大量的基於php的傻瓜式應用,比如wordpress,discuz之類的,如果你只有一般的博客或論壇需求的話,只要善用google,你不用寫哪怕一行代碼。但是,php本身simple嗎?個人認為不是的,原因就不一一列舉了。至於dirty,我更覺得說的是他的設計,語言設計比較糟糕,看著常常的下劃線連接的函數名就略窺一二,除了有豐富經驗的php程式設計師,很難有人能寫出沒有嚴重漏洞的程式碼。

php開發框架建議:一等:Yii,Yaf,Symfony;二等:Zend,Cake,CI 

Django 
Django是基於Python的web開發框架,和Rails十分的相似,前幾年,他比Rails好的地方在於Python比Ruby更“可靠”,所謂可靠,就是更多人用,文檔更多,更能通過詢問找到答案,但隨著近幾年Ruby的逐漸興起(大部分靠Rails的帶動) ,越來越多的網站使用Rails。單論語言設計,Python不見得比Ruby簡潔,一致性也略遜於Ruby,可以說Python唯一的優勢就是有很多serious scientists都在使用它,在科學計算領域佔據大半江山,而Ruby是日本人造的(Ruby借鑒了Python)。倘若Ruby是與Python同時代的歐美國家誕生的語言,相信現在已經沒Python什麼事了。 

Rails 
Rails是個驚人的web框架,幾乎現在所有的主流web框架都能看到Rails的影子,Rails把Ruby的特性用到了極限。 Rails能應用於一切大中小型應用,超大規模應用不是單靠任一腳本語言就能勝任的。 Rails經過多年的發展已經洗盡鉛華,現在正處於「一枝獨秀」的狀態,可以說沒有一款框架的綜合能力(易用性,簡介性,效率,學習曲線等)能超越Rails,NodeJS不行, Django不行,其他「小眾」的語言更不行,相反,Rails正處於飛速發展狀態,以後超大規模應用的成功案例也會逐一出現。

NodeJS 
NodeJS是一款很有前景的Web框架,可惜就是晚生了幾年,不然現在也是能和Rails一較高下,相比php,Django和Rails,NodeJS的開源專案相對較少,大型的成功案例也略少,但其設計和性能也相當簡潔和高效。相信不久的將來也會大放異彩。

ASP,JSP等 
複雜,臃腫,企業級,靠人數堆積的公司,國企,銀行,電商,創業公司用這些的話就是自殺,重要部門不用這些的話也是自殺(招的人不行,只能用售後啦)。 

其他 
其他語言就是各有各的用途,只不過業務恰好用到該語言罷了,嚴格的說不能算是專門搞網絡開發的,比如Clojure,Io等。這裡暫時不討論了。

總結: 

如果讓我再次選擇學習路線(只有語言,不包括server,db方面)的話,我會 

了解一下php,不用深入 

了解一下Yii,一款php的MVC框架,不必深入 

基本學習Ruby 

基本學習Rails 

徹底學習Ruby 

徹底學習Rails 

了解Pyt ,Django,Lisp,Clojure,NodeJSo
了解Pyt------ -----------分割線------------------------------ 

這篇文章對rails和nodejs的適用場景描述的非常到位。 rails和nodejs是最值得關注的兩種後台技術。 
聲明:這篇文章絕不是一篇討論 NodeJS 和 Ruby on Rails 孰優孰略的檄文。它所描述的只是我們做決策過程中的一些思考、決策背後的原因。兩種框架都非常優秀,都出色的完成了它們的設計初衷,這也是為什麼我們部分的模組仍然運行在NodeJS上的原因。 

我是NodeJs的大粉絲,認為這是一項讓人非常興奮的技術,相信它會變的越來越流行。我對這項技術非常的欣賞——儘管我們最近把Targeter App從NodeJS遷移到了Ruby on Rails。 

我們當時使用NodeJS來發展它的原因很簡單。我有一個程式包,能很快的將我們的應用弄上線(我們花了54小時做這個事情),相比起Ruby,我更 常使用的是JavaScript。因為我們的技術架構牽涉到MongoDB,我的這些專長只有在NodeJS環境裡才會有意義。然而,隨著應用程式規模的增 長,我意識到,選擇NodeJS來實現這個應用程式是個錯誤的選擇。下面讓我來概述一下其中的原因。 

NodeJS很適合做那些有大量短生命期請求的應用。對於傳統的CRUD應用,它也很好,但不是非常的理想。在 PHP,Ruby,Python語言裡都有很成熟、優化的很好的框架來處理這個應用。 NodeJS裡的所有東西都非同步執行的理念對於CRUD應用來說沒有 任何效果。其它語言裡的流行的框架能提供非常好的快取技術,你所有的需求都能滿足,包括非同步執行。 

NodeJS是一種非常年輕的技術框架,它的周邊程式庫都不是很成熟。我說這些並沒有任何對那些程式碼捐贈者冒犯 的意思,他們很優秀,開發出來很多優秀的程式庫。然而,大部分的程式庫需要改進,而NodeJS這種快速成長的環境意味著每一版升級中都帶有大量的變化; 當你使用一種前沿技術時,你十分有必要盡快的緊跟最新的版本。這給創業型的企業帶來了很多的麻煩。 

另一個原因是關於測驗。 NodeJS裡的測試框架還不錯,但跟Django或RoR平台上的比較還是差一些。對於一個每天都有大量的程式碼提交、並且在一兩天內就要發布的應用程式來說,程式不能出問題是至關重要的,否則你為此辛苦的努力變得得不償失。沒有人願意花一天的時間改一些弱智的bug。 

最後一點,我們需要的是一種可以緩存一切的東西,並且要盡快的實現。儘管我們的應用程式正在成長,每秒鐘有上萬次的hits,但絕不會出現很大量的存取請求;這不是一個聊天程式!主程式最多時也就達到1000RPS,這樣的負載對於Ruby on Rails和Nginx來說算不了什麼。 

如果你現在還在讀這篇文章,那你已經看到了我所有要說的了,你也許非常堅持的想知道我們的應用什麼地方還在使用NodeJS。是這樣的,我們的應用 由兩個部分組成。一是介面,使用者看到的這部分,二是負責報表管理的部分,以及做日誌的功能。後者是NodeJS的一個最佳使用場景,存在有大量的短週期的請 求。這部分的動作需要盡快的執行完成,甚至在我們的資料推送還沒完成之前。這很重要,當請求執行還未結束,瀏覽器繼續等待回應結束,這會影響使用者使用 體驗。 NodeJS的非同步特性救了我們。資料要麼被存入資料庫,要麼被處理掉,當請求一旦執行完成,瀏覽器就可以開始做它重要的事情了。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
上一篇:PHP命名空間下一篇:PHP命名空間