文章出自:PHP + Apache Stack vs Node.js
這是一位具有PHP 5認證的開發人員所寫的文章,他自承是PHP的粉絲,在實務上也是使用PHP開發過數百個網站,用過各式各樣的CMS和PHP框架。
而他近來開始使用Node.js在一些專案上,累積了一些經驗,因此作了一些比較。
PHP的優點:
眾所皆知PHP廣泛使用在網路世界,有許多知名的站都是採用PHP,像是facebook、Wikipedia,而且要找到hosting的方案也很容易。對內容網站來說,使用PHP有其優點。
PHP的缺點:
PHP無法處理耗時較久/記憶體耗用大的工作
PHP無法平行執行程式碼
Apache+PHP的環境設定較複雜,作URL maping需要.htaccess輔助
官網很醜
套件管理程式不優
處理完資料後,無法儲存在記憶體中(雖然有第三方的工具可以支援)
Node.js的優點
Node.js最強的就是它的事件驅動設計,簡單、威力強大而且有一致的介面。
作者說有人認為Node.js內建Server是壞事,他覺得說這些話的人瘋了。Node.js和Server一體的好處,是每個request都知道在相同的處理程序中,知道該往哪走,而不需要.htaccess這些額外的設定來處理。
Web應用程式瓶頸通常出現在network的I/O,而Node.js的強項正在這裡。
Node.js採用JavaScript,因此對Web開發人員來說通常已經很熟悉,要入門很快。
Node.js的套件管理系統NPM做的相當好,而且每個人都可以輕易的將自己開放的東西放上去。
Node.js將資料存放在記憶體中相當然容易,便於讓不同的client存取。
Node.js的缺點
Node.js的缺點就是新,還不夠穩定,API經常在更新,如果要開發大型的應用程式,也許Node.js不是一個最佳選項。
如果要處理大量的靜態檔案,也許Node.js也不是最佳選擇,它必須回到利用檔案系統來檢查檔案是否存在。
另外JavaScript對Class based和不熟悉非同步的開發者來說,也有適應上的痛苦。
另外雖然讓資料常駐在記憶體中雖然很容易,不過同時也招來風險,除了有可能導致記憶體洩露,也可能導致Node.js炸掉。
至於該學哪一個,作者的建議是如果你是server side開發的完全初學者,PHP還是相當值得學的,不過如果你想要做一些較特別的應用,也許Node.js就值得一試。
但如果是以Single Page Application來說,Node.js是比PHP佔優勢,但Node.js是不是最後的贏家,作者也有所保留,他認為JavaScript一些先天上的缺點,讓其它語言有機會迎頭趕上(作者比較狠,用easily kick its ass)
最後,作者打趣的說,用PHP要作出Node.js的機制,必須要用一堆東西才戸兜得出來;而Node.js要模擬PHP,只需要改用同步機制就行了。