溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

vue-router的兩種模式有哪些區(qū)別

發(fā)布時(shí)間:2022-03-03 17:07:00 來源:億速云 閱讀:281 作者:iii 欄目:web開發(fā)

這篇“vue-router的兩種模式有哪些區(qū)別”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“vue-router的兩種模式有哪些區(qū)別”文章吧。

區(qū)別:1、history的url沒有“#”號,而hash有;3、history修改的url可以是同域的任意url,而hash是同文檔的url;3、相同的url,history會(huì)觸發(fā)添加到瀏覽器歷史記錄棧中,而hash不會(huì)觸發(fā)。

本教程操作環(huán)境:windows7系統(tǒng)、vue2.9.6版,DELL G3電腦。

vue-router兩種模式

1.hash模式

vue-router默認(rèn)的是hash’[h??] '模式,使用URL的hash來模擬一個(gè)完整的URL,于是當(dāng)URL改變的時(shí)候,頁面不會(huì)重新加載,也就是單頁面應(yīng)用了。當(dāng)#后面的hash發(fā)生變化,不會(huì)導(dǎo)致瀏覽器向服務(wù)器發(fā)出請求,瀏覽器不會(huì)發(fā)出請求就不會(huì)刷新頁面,并且會(huì)觸發(fā)hasChange這個(gè)事件,通過監(jiān)聽hash值的變化來實(shí)現(xiàn)更新頁面部分內(nèi)容的操作。

對于hash模式會(huì)創(chuàng)建hashHistory對象,在訪問不同的路由的時(shí)候,會(huì)發(fā)生兩件事:

HashHistory.push()將新的路由添加到瀏覽器訪問的歷史的棧頂,和HasHistory.replace()替換到當(dāng)前棧頂?shù)穆酚伞?/p>

vue-router的兩種模式有哪些區(qū)別

2.history模式

因?yàn)镠TML5標(biāo)準(zhǔn)的發(fā)布,多了兩個(gè)API,pushState() 和 replaceState()。通過這兩個(gè)API

(1)可以改變url地址且不會(huì)發(fā)送請求。

(2)不僅可以讀取歷史記錄棧,還可以對瀏覽器歷史記錄棧進(jìn)行修改。

除此之外,還有popState(),當(dāng)瀏覽器跳轉(zhuǎn)到新的狀態(tài)時(shí),將觸發(fā)popState事件。

添加/修改歷史狀態(tài)

包括了pushState,replaceState兩個(gè)方法,這兩個(gè)方法接收三個(gè)參數(shù):stateObj,title,url

// 逐條添加歷史記錄條目
window.history.pushState(stateObject, title, URL)
// 修改歷史記錄
window.history.replaceState(stateObject, title, URL)

切換歷史記錄

包括 backforward、go三個(gè)方法,對應(yīng)瀏覽的前進(jìn)(forward)、后退(back)、跳轉(zhuǎn)(go)操作。

區(qū)別:

  • history和hash都是利用瀏覽器的兩種特性實(shí)現(xiàn)前端路由,history是利用瀏覽歷史記錄棧的API實(shí)現(xiàn),hash是監(jiān)聽location對象hash值變化事件來實(shí)現(xiàn)

  • history的url沒有’#'號,hash反之

  • history修改的url可以是同域的任意url,hash是同文檔的url

  • 相同的url,history會(huì)觸發(fā)添加到瀏覽器歷史記錄棧中,hash不會(huì)觸發(fā)。

history和hash的優(yōu)點(diǎn)和缺點(diǎn)

  • history比hash的url美觀(沒有’#'號)

  • history修改的url可以是同域的任意url,hash則只能是同文檔的url

  • history模式往往需要后端支持,如果后端nginx沒有覆蓋路由地址,就會(huì)返回404,hash因?yàn)槭峭臋n的url,即使后端沒有覆蓋路由地址,也不會(huì)返回404

  • hash模式下,如果把url作為參數(shù)傳后端,那么后端會(huì)直接從’#‘號截?cái)?,只處理?'號前的url,因此會(huì)存在#后的參數(shù)內(nèi)容丟失的問題,不過這個(gè)問題hash模式下也有解決的方法。

history模式怕啥

不怕前進(jìn),不怕后退,就怕刷新,(如果后端沒有準(zhǔn)備的話),因?yàn)樗⑿率菍?shí)實(shí)在在地去請求服務(wù)器的。

在history模式下,你可以自由的修改path。history模式最終的路由都體現(xiàn)在url的pathname中,這部分是會(huì)傳到服務(wù)器端的,因此需要服務(wù)端對每一個(gè)可能的path值都作相應(yīng)的映射。

當(dāng)刷新時(shí),如果服務(wù)器中沒有相應(yīng)的響應(yīng)或者資源,會(huì)分分鐘刷出一個(gè)404來。

以上就是關(guān)于“vue-router的兩種模式有哪些區(qū)別”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI