本文目錄一覽:
java為啥沒有前後端不分離模式
因為前後端分離有很多優點。
1、為優質產品打造精益團隊,通過將開發團隊前後端分離化,讓前後端工程師只需要專註於前端或後端的開發工作,是的前後端工程師實現自治,培養其獨特的技術特性,然後構建出一個全棧式的精益開發團隊。2、提升開發效率,前後端分離以後,可以實現前後端代碼的解耦,只要前後端溝通約定好應用所需介面以及介面參數,便可以開始並行開發,無需等待對方的開發工作結束。與此同時,即使需求發生變更,只要介面與數據格式不變,後端開發人員就不需要修改代碼,只要前端進行變動即可。如此一來整個應用的開發效率必然會有質的提升。3、完美應對複雜多變的前端需求,如果開發團隊能完成前後端分離的轉型,打造優秀的前後端團隊,開發獨立化,讓開發人員做到專註專精,開發能力必然會有所提升,能夠完美應對各種複雜多變的前端需求。4、增強代碼可維護性,前後端分離後,應用的代碼不再是前後端混合,只有在運行期才會有調用依賴關係。應用代碼將會變得整潔清晰,不論是代碼閱讀還是代碼維護都會比以前輕鬆。
Web項目開發為何要走前後端分離模式?
把前端與後端獨立起來去開發,放在兩個不同的伺服器,需要獨立部署,兩個不同的工程,兩個不同的代碼庫,不同的開發人員,前後端工程師需要約定交互介面,實現同步開發,開發結束後需要進行獨立部署,前端通過介面來調用調用後端的API,前端只需要關注頁面的樣式與動態數據的解析和渲染,而後端專註於具體業務邏輯。具體好處有以下幾點:
1.徹底解放前端
前端不再需要向後台提供模板或是後台在前端html中嵌入後台代
2.提高工作效率,分工更加明確
前後端分離的工作流程可以使前端只關注前端的事,後台只關心後台的活,兩者開發可以同時進行,在後台還沒有時間提供介面的時候,前端可以先將數據寫死或者調用本地的json文件即可,頁面的增加和路由的修改也不必再去麻煩後台,開發更加靈活。
3.局部性能提升
通過前端路由的配置,我們可以實現頁面的按需載入,無需一開始載入首頁便載入網站的所有的資源,伺服器也不再需要解析前端頁面,在頁面交互及用戶體驗上有所提升。
4.降低維護成本
通過目前主流的前端MVC框架,我們可以非常快速的定位及發現問題的所在,客戶端的問題不再需要後台人員參與及調試,代碼重構及可維護性增強。
5.實現高內聚低耦合,減少後端(應用)伺服器的並發/負載壓力。
6.即使後端服務暫時超時或者宕機了,前端頁面也會正常訪問,但無法提供數據。
7.可以使後台能更好的追求高並發,高可用,高性能;使前端能更好的追求頁面表現、速度流暢、兼容性、用戶體驗等。
我理解的前後端分離,前端是需要起伺服器的,減少學習成本,可以用node,前端也要有域名的
如果是半分離, 那麼前端提供js文件(css等)這個我也做過,前後端都用node就不說了,如果是兩種語言,
如果一個工程文件下開發,webpack下直接打包進後台語言的靜態目錄下。
如果是兩個工程,那麼前端只提供生成的js(css)文件,git pull後台項目,扔進靜態目錄,這樣又涉及到版本控制的問題,一般我會生成一個配置文件,直接讀取的,內容是xxx.hash.js這種文件名,然後document.wirte動態寫入js/css
前端起伺服器就不需要動態引入了,直接html插件生成文件,更好的控制版本
半分離 還有一個問題,例如首頁同構,如果更改xxx.blade.php文件,這就又動了php文件,甚至包括nginx反向代理啊,ssl這種緩存啊,都比較麻煩,你要是改了點啥,自己的ok了,後台的崩了,那就挺操蛋了,大公司有專門的運維還好,小公司真的是一團糟
後台我們採取全分離,nginx前端管理,至於升級nginx版本,http2,反向代理,https證書,都是前端自己弄,畢竟小公司,每個人水平都不一致,自己負責自己的比較好
但是這個跨域又要稍微處理一下,至今我這邊後台還是*,我也沒法說什麼
阿里雲這麼便宜,如果把成本浪費在人力上,會變得很貴
一個人的精力有限,前後端分離有助於我們更專註我們所要注重的技術點,俗話說:「術業有專攻」。
比如我們後端,前後端分離有助於我們把注意力放在java基礎,設計模式,jvm原理,spring+springmvc原理及源碼,linux,mysql事務隔離與鎖機制,mongodb,http/tcp,多線程,分散式架構(dubbo,dubbox,spring cloud),彈性計算架構,微服務架構(springboot+zookeeper+docker+jenkins),java性能優化,以及相關的項目管理等等。
而前端也可以集中精力在前端的展示上。
總的來說,前後端分離利大於弊。這也是越來越少用jsp的原因。
補充兩點
1.每次請求的數據量變小,也意味著更少的響應時間。
2.也不是每個應用用前後端分離都是最合適的,要根據應用規模,工期綜合判斷。
jsp與前後端分離誰更快
前後端分離更快
前後分離的優勢:
1.可以實現真正的前後端解耦,前端伺服器使用nginx。
前端/WEB伺服器放的是css,js,圖片等等一系列靜態資源(甚至你還可以css,js,圖片等資源放到特定的文件伺服器,例如阿里雲的oss,並使用cdn加速),前端伺服器負責控制頁面引用跳轉路由,前端頁面非同步調用後端的介面,後端/應用伺服器使用tomcat(把tomcat想像成一個數據提供者),加快整體響應速度。這裡需要使用一些前端工程化的框架比如(nodejs,react,router,react,redux,webpack)
2.發現bug,可以快速定位是誰的問題,不會出現互相踢皮球的現象。
頁面邏輯,跳轉錯誤,瀏覽器兼容性問題,腳本錯誤,頁面樣式等問題,全部由前端工程師來負責。
介面數據出錯,數據沒有提交成功,應答超時等問題,全部由後端工程師來解決。
雙方互不干擾,前端與後端是相親相愛的一家人。
3.在大並發情況下,可以同時水平擴展前後端伺服器,比如淘寶的一個首頁就需要2000+台前端伺服器做集群來抗住日均多少億+的日均pv。
4.減少後端伺服器的並發/負載壓力
除了介面以外的其他所有http請求全部轉移到前端nginx上,介面的請求調用tomcat,參考nginx反向代理tomcat。
且除了第一次頁面請求外,瀏覽器會大量調用本地緩存。
5.即使後端服務暫時超時或者宕機了,前端頁面也會正常訪問,只不過數據刷不出來而已。
6.也許你也需要有微信相關的輕應用,那樣你的介面完全可以共用,如果也有app相關的服務,
那麼只要通過一些代碼重構,也可以大量復用介面,提升效率。(多端應用)7.頁面顯示的東西再多也不怕,因為是非同步載入。
8.nginx支持頁面熱部署,不用重啟伺服器,前端升級更無縫。
9.增加代碼的維護性易讀性(前後端耦在一起的代碼讀起來相當費勁)。
10.提升開發效率,因為可以前後端並行開發,而不是像以前的強依賴。
11.在nginx中部署證書,外網使用https訪問,並且只開放443和80埠,其他埠一律關閉(防止黑客埠掃描),內網使用http,性能和安全都有保障。
12.前端大量的組件代碼得以復用,組件化,提升開發效率,抽出來!
原創文章,作者:RDQG,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/148003.html