前後端分離端nodejs mongodb express後台spring restfui webservice,mybatis mysql這樣適合中大型應用嗎?
12-30
現在自己團隊有想法,想做個中型應用,以前做過小的開發都一直沒有進行前後端分離,原計劃項目也沒考慮前後端要進行分離,但是通過了解用nodejs進行前後端分離,確實可以讓前後端工作能更加純粹,關注點分離,並且解耦,但是擔心會增加成員的學習曲線,拖延項目進度,而且感覺nodejs還不成熟,而且也不是很穩定,性能會不會下降,請教大家
根據自身經驗及淘寶前後端分離。
提供一個方案,僅供參考。##前端:###靜態伺服器部分:
1、模塊化,例如require.js2、css、js壓縮3、less or sass###前端服務部分:
1、代理後端的http請求,這裡應該是作為「web層」。可以用http-proxy來實現。2、模板引擎。例如ejs###頁面框架部分:1、mvvm 例如 angular 等###本地開發部分
1、例如grunt或者fis###負載均衡部分1、前後端的session處理 例如redis2、反向代理 例如nginx3、內容服務 例如某cdn
##這樣架構的好處:
1、前端與後端徹底解耦,減少溝通成本。2、前端開發「工程化」。那麼多開發工具可以用,省心,省力。3、分析前端js錯誤、後端請求的錯誤更加方便。
##這樣架構的壞處:
1、訪問速度會稍微慢一點點(很直觀的,會多一次http請求,最容易理解的)。2、題主所說的學習成本會增加,這個學習成本主要是在: 2.1 .前端框架的構建,目測需要t5級別(包含)以上的人才能把問題考慮的稍微周全點。 2.2 .團隊里fe也要稍微會一點node,至少一些命令(例如npm)得會使用,但不需要達到能「熟悉node的一些api」的級別。 2.3 .前後兩端要溝通好數據交換的方式,類型(很重要)。 2.4 .會什麼要用mongodb?除非你要分析日誌。如果你要做,我也不知道該怎麼辦了,因為目前我也卡在這個地方了。3、性能問題: 2.1 .老問題了,callback(可以理解為閉包)太多,一些不能捕獲的異常有時會出現,node時不時的就掛了,這個時候,目前我知道有一個解決方法:重啟 。 例如forever,腳本也可以 2.2 .要充分利用node的進程間共享。 作為一個小菜菜,性能方面的知識有點欠缺,還得多實踐實踐。不過目前線上沒有出太大的問題(電商,日pv1000萬,mobpc端)。不喜勿噴啊,答主剛畢業,玻璃心不要為了折騰而折騰, 如果你的業務沒痛到需要前後端分離, 如果你的團隊沒有Node的主研,如果你的團隊沒有高級前端工程師, 先不要這麼玩。
先把第一代前後端分離實現了先吧,也即後端服務化, 提供AJAX介面, 前端渲染顯示。等你完成了這步, 並且團隊都很吃透這套時,你們就會發現痛點, 那時候才知道為何需要新一代前後端分離。用mongodb的話,因為存在前後端模型共享的問題,肯定要做前後端分離,單獨出來一個server端提供api,目前正在想這方面的辦法
最近也在考慮是否用這個去做
當有人問我要解決什麼問題的時候
我只能說為了實現前後端分離但並不算是解決根本性的問題推薦閱讀:
※超小團隊選擇django還是flask?
※就想看技術書籍,但是動手編程慾望不大怎麼辦?
TAG:前端開發 | 後端技術 | Nodejs | RESTful | WebService |