java前後端分離,java前後端分離用什麼技術

本文目錄一覽:

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-hant/n/148003.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RDQG的頭像RDQG
上一篇 2024-11-02 13:14
下一篇 2024-11-02 13:14

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean加載過程

    Java Bean加載過程涉及到類加載器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean加載的過程。 一、類加載器 類加載器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論