2018年10月17日 星期三

《面試官別再問》Web 前後端分離有意義嗎?

前後端邏輯混合開發模式:

優點:
1. 用戶體驗好,在相同的網絡條件和業務複雜度以及硬件環境下,他可以快速進行首頁展示,避免ajax請求所帶來的渲染延時。
2. 有利於seo搜索引擎優化。
3. 方便靜態化,在訪問高峰期可以將某些訪問量大並且業務數據大部分不變的頁面生成靜態頁面進行緩存,有利於快速渲染。


缺點:
1. 耦合度太高,在協作開發的時候前端的開發人員要與後端的開發人員互相等待來完成整體的功能,而且後端開發人員需要了解前端   的頁面結構來填充邏輯代碼,大大降低開發效率並且一旦出問題無法快速定位問題。
2. 不易維護,由於對於一個頁面的維護需要牽扯到兩端的開發人員來共同進行維護,在需求變更後容易出現bug。
3. 對後端開發語言進行了強依賴,一旦這兩種語言參雜在一起,對於後端來講前端是無法復用的。


WEB 前後端分離三個最大的優點在於:

1:最大的好處就是前端JS可以做很大部分的數據處理工作,對服務器的壓力減小到最小
2:後台錯誤不會直接反映到前台,錯誤減少較為友好
3:由於後台是很難去探知前台頁面的分佈情況,而這又是JS的強項,而JS又是無法獨立和服務器進行通訊的。所以單單用後台去控制整體頁面,又或者只靠JS完成效果,都會難度加大,前後台各盡其職可以最大程度的減少開發難度。

為了解決傳統Web開發模式帶來的各種問題,我們進行了許多嘗試,但由於前/後端的物理鴻溝,嘗試的方案都大同小異。痛定思痛,今天我們重新思考了“前後端”的定義,引入前端同學都熟悉的NodeJS,試圖探索一條全新的前後端分離模式。

大家一致認同的前後端分離的例子就是SPA(Single-page application),所有用到的展現數據都是後端通過異步接口(AJAX/JSONP)的方式提供的,前端只管展現。
從某種意義上來說,SPA確實做到了前後端分離,但這種方式存在兩個問題:
  • WEB服務中,SPA類佔的比例很少。很多場景下還有同步/同步+異步混合的模式,SPA不能作為一種通用的解決方案。
  • 現階段的SPA開發模式,接口通常是按照展現邏輯來提供的,有時候為了提高效率,後端會幫我們處理一些展現邏輯,這就意味著後端還是涉足了View層的工作,不是真正的前後端分離。
SPA式的前後端分離,是從物理層做區分(認為只要是客戶端的就是前端,服務器端的就是後端),這種分法已經無法滿足我們前後端分離的需求,我們認為從職責上劃分才能滿足目前我們的使用場景:
  • 前端:負責View和Controller層。
  • 後端:只負責Model層,業務處理/數據等。

1、對於後端java工程師:

把精力放在java基礎,設計模式,jvm原理,spring+springmvc原理及源碼,linux,mysql事務隔離與鎖機制,mongodb,http/tcp,多線程,分佈式架構,彈性計算架構,微服務架構, java性能優化,以及相關的項目管理等等。

後端追求的是:三高(高並發,高可用,高性能),安全,存儲,業務等等。

2、對於前端工程師:

把精力放在html5,css3,jquery,angularjs,bootstrap,reactjs,vuejs,webpack,less/sass,gulp,nodejs,Google V8引擎,javascript多線程,模塊化,面向切面編程,設計模式,瀏覽器兼容性,性能優化等等。

前端追求的是:頁面表現,速度流暢,兼容性,用戶體驗等等。

術業有專攻,這樣你的核心競爭力才會越來越高,正所謂你往生活中投入什麼,生活就會反饋給你什麼。並且兩端的發展都越來越高深,你想什麼都會,那你畢竟什麼都不精。

沒有留言:

張貼留言

網誌存檔