搜尋
首頁後端開發php教程Rails與Node.js/PHP/Python等對比

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

其次,我也沒有全部用過 

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

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
使用數據庫存儲會話的優點是什麼?使用數據庫存儲會話的優點是什麼?Apr 24, 2025 am 12:16 AM

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

您如何在PHP中實現自定義會話處理?您如何在PHP中實現自定義會話處理?Apr 24, 2025 am 12:16 AM

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

什麼是會話ID?什麼是會話ID?Apr 24, 2025 am 12:13 AM

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

您如何在無狀態環境(例如API)中處理會議?您如何在無狀態環境(例如API)中處理會議?Apr 24, 2025 am 12:12 AM

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

您如何防止與會議有關的跨站點腳本(XSS)攻擊?您如何防止與會議有關的跨站點腳本(XSS)攻擊?Apr 23, 2025 am 12:16 AM

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

您如何優化PHP會話性能?您如何優化PHP會話性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

什麼是session.gc_maxlifetime配置設置?什麼是session.gc_maxlifetime配置設置?Apr 23, 2025 am 12:10 AM

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

您如何在PHP中配置會話名?您如何在PHP中配置會話名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)