截至2016年12月,中國網民規模已達7.31億。傳統的網站系統是否能夠支撐得起如此龐大的且不斷增長的用戶訪問并且為用戶提供體驗友好的頁面?
一、傳統的前后端:
二、傳統的前后端分離問題:
性能問題:
1、渲染、數據都在客戶端做,影響性能;
2、需要等待資源到齊才能進行,會有短暫白屏與閃動,尤其是網頁由js生成的體驗更差;
3、在低速網絡情況下體驗更差;
重用問題:
1、模版無法重用,造成維護上的麻煩與不一致;
2、邏輯無法重用,前端的校驗后端仍須在做一次;
跨終端問題:
1、業務太靠前,導致不同端重復實現;
2、邏輯太靠前,造成維護上的不易;
即使使用CDN可以提高網站的響應速度,但是面對以上問題,尤其是用戶關心的頁面體驗問題,傳統的網站架構應對起來依然是捉襟見肘。這里提供一種使用NodeJS作為中間件的解決方案。
?
三、重新定義的前后端:
在服務器和瀏覽器之間增加了一個中間層
1、Node.js
Node.js是一個Javascript運行環境。Node.js 使用事件驅動, 非阻塞I/O 模型而得以輕量和高效,非常適合在分布式設備上運行數據密集型的實時應用。Node.js是單進程、單線程運行機制,通過事件輪詢(event loop)來實現并發操作,而且性能很好。
使用NodeJS作為Web中間層的優勢:
a、跨系統、跨終端均可重用頁面數據校驗、邏輯代碼,無需因為新系統、終端的接入而重寫校驗;
b、只在中間件中做一次數據校驗,避免了前端做數據校驗的同時后端也要做校驗的重復,在有效保證數據的有效性的同時降低了團隊整體的工作量;
c、處理數據邏輯,解放了前端既要做頁面渲染又要寫復雜的邏輯,使得頁面開發人員專注于頁面渲染,不僅使得分工更為明確,項目協作效率更高,更重要的是快速響應頁面使得頁面加載更快,用戶體驗更好,避免了瀏覽器長時間顯示空白頁面的不友好體驗;
更多可能:
1)適用于高并發、短事務性數據請求處理的應用場景;
以下是nodejs處理請求提供web service服務與java對比:
Nodejs的高性能以及顯著的io優勢為架構提供了高可伸縮性。
2)技術框架:Sails 提供了建立任何規模的 web 應用所需要的所有功能,特別適合對數據實時更新有較高要求的應用場景;Meteor框架是 Node.js 上非常出色的全棧框架,可以用它構建純Javascript 的實時 Web 和 手機應用;Mean 作為一款全棧的開發框架,幾乎代表了 Mongo DB,Express,Angular和?
Node.js 的組合,幾乎涵蓋了應用開發的所有方面,其開箱即用的工具極大簡化并加快了應用的開發,同時可用于任意大小和復雜度的應用開發。
案例見:天貓、淘寶等(中間層);網易pomelo(服務端)