PHP中文网2017-04-17 11:30:51
不建議使用node寫。因為node的特徵是偏向效能,而php的特徵是注重邏輯。
開發電商網站的話。是對邏輯有更多要求。比如說,分類,商品,評論,訂單,之類的都是業務邏輯。
php 的(fpm)模型是基於執行緒的同步模型。所以你可以把大把的精力花在怎麼處理你的業務邏輯。而不是去向java那樣去搗鼓線程同步,資源搶佔上面。更不用想node那樣去考慮阻塞,非同步流程,和異常管理。這種模型對於性能上很粗暴但是對於業務開發成型非常有效。進程模型在低並發的場景中是非常有效的,沒有記憶體洩漏,和健壯性不高帶來的問題。因為一個執行緒的結束,就意味著所有佔據的資源都會被釋放。 php使用c作為擴展載體也確保了運算和io的效能。
node 是基於單執行緒非同步模型。所以你需要考慮的事情就比較多了。非同步流程控制,單執行緒是脆弱的,需要做master/slave來增強健壯度。還要考慮異步下的異常處理。單執行緒也意味著不能容忍任何低效能(耗時計算等)和阻塞。
php社群現在發展的也越來越好,有symfony2和laravel等框架都讓你不用去自己去造輪子。自己現在的各種第三方平台都對php提供支援。而且以上兩個框架都提供了依賴注入,orm,模組化開發,資源管理等特性。可以輕鬆開發業務複雜而了擴充性好的web程式。對rest也都有很好的支持。橫向擴展也很好。
node在web開發框架上只有connect,express比較成熟一些,而且express並不是一個mvc框架,精確來說是一個http業務層框架。也意味著你需要分散一些精力去處理除業務邏輯之外的部分,例如如何分層,選擇什麼樣的orm,採用什麼樣的模板引擎等。而且express的許多功能需要中間件提供支持,例如 cookies, session, json,crsf等。駕馭好express需要對http有深入的認識。對rest支援比較裸露。需要使用第三方類別庫才能優雅支持,透過express建立業務複雜擴展性好的web程式需要開發者不僅擁有比較強的js功底和開發複雜業務的經驗還要有維護優雅可擴展程式碼的能力。
所以個人認為nodejs不適合開發具有以下性質的產品
1.原型產品
2.對性能無要求產品
3.計算量更多
4.團隊中js能力整體比較弱
所以 你的 的問題 起碼佔了1,2。不建議使用node。
node固然美使用需謹慎,因為他有很多坑需要開發者來填。 nodejs個人認為相比較其他平台還是太年輕,這也意味著,我們需要幫助node長大。變成高效能和易用並存的強大平台。
伊谢尔伦2017-04-17 11:30:51
如果題主是對js很熟悉的程式設計師,用node是極好的,統一了語言,可以兼顧開發速度和效能。
如果是一個團隊來做,也要考慮隊友是否能接受node,php也許更適合。
單純進行理論可行性的討論是沒有意義的,Just do it!
PHP中文网2017-04-17 11:30:51
因為Node的特色和彈性,加上幾年發展生態也比較成熟了。我學得規避一下大計算的部分,跟Node做電商專案還是挻合適的。
有個問題: Node做電商資料庫是用mongodb還是Mysql適合。