前端路由是如何產生的?
剛開發學習前端,開發**是寫上乙個個html檔案,分別然後插入css,插入script標籤。這樣進行開發,這樣了就有兩個比較大的問題,一是重複的東西不容易復用,而是**容易被別的**干擾。
前端技術逐漸發展,現代web框架(vue、angular、react)產生,它在兩方面極大的解放了開發者,提高了開發效率。一是元件式開發,提高了**的復用性,並且避免了**間的干擾(css也有對應的避免方式)。二是由原來的事件驅動轉為資料驅動,讓開發人員不用像以前一樣需要寫很多的dom事件,資料的改變可以引起頁面的改變。web框架開發的是單頁面應用,前端路由也隨之而來。
什麼是前端路由?
說到前端路由,先說後端路由。客戶端向伺服器端傳送請求,這個請求url就是就是後端路由的一部分,後端路由匹配上了,然後進行處理,返回相應的資源。前端路由,就是url的匹配處理在前端頁面進行,而不需要向後端請求。這就是一種在頁面不重新整理的情況下,更改頁面內容的手段。
前端路由是如何實現的?
輸入**變化是手動改了hash部分
2. window.history
- history.go(),history.forward(),history.back()
- history.pushstate (stateobj, title, url) 修改當前url,會再瀏覽器訪問歷史中增加乙個記錄
- history.replacestate() 替換當前url,不會增加瀏覽器訪問歷史記錄
- 使用這兩個方法更改url,瀏覽器不會重新整理頁面
- popstate事件(html5新增)
- 當活動歷史記錄條目更改時,將觸發popstate事件。事件的state屬性包含歷史條目的狀態物件(stateobj)的副本;
- 呼叫history.pushstate()或history.replacestate()修改url時不會觸發popstate事件
兩種基礎的方法,就有了前端路由的兩種模式
hash模式
後面的url解析,匹配頁面,頁面渲染,應該在hashchange事件裡進行。這裡簡單的可用匹配url然後用對應的html做innerhtml替換。沒寫頁面載入的,頁面載入的處理也和hashchange裡一樣,不過觸發的事件不同。
2. history模式
history模式和hash模式除了監聽的事件不同,改變url的方式不同,之後的處理是一樣的。需要注意的是,這種模式下,頁面載入時,向後端傳送的請求時url完整的路徑,這就需要後端設定,不管請求的是哪個路徑(需要返回頁面的路徑)都返回乙個html檔案。不然會出現頁面在切換的時候正常,但一重新整理就404。
Vue SpringBoot 前端向後台傳送多引數
vue springboot 前端向後台傳送多引數 前端包裝,後台通過map進行引數的接收。引數包括普通資料型別及陣列 其中node1 node2為核取方塊勾選的陣列,其他的為int或string型 後台jsonarray處理將其轉化 public resulttype function reque...
前端攜帶List引數向後端傳送請求很困難?NO
在最近的專案開發中,遇到了乙個前端向後端傳送list型別資料的請求,各種嘗試結果總是失敗,特此總結下來。後端介面 根據部落格型別id集合刪除部落格集合 ids public responseentity void deleteblogtypes requestbody list long blogt...
day59 前端向後台提交資料的幾種方式
直接用from表單的方式提交資料,優點是簡單,缺點是錯誤資訊看不到。ajax提交,其中又分為兩種 1.有錯誤就顯示錯誤資訊,無錯誤就重新整理頁面 js location.relad 2.有錯誤,顯示錯誤資訊,無錯誤,區域性新增 jquery 通過on繫結事件 缺點 個人覺得這種方法特別特別特別麻煩。...