溫馨提示×

溫馨提示×

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

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

Vue中hash路由和history路由的區別有哪些

發布時間:2021-11-15 09:16:47 來源:億速云 閱讀:178 作者:小新 欄目:編程語言

小編給大家分享一下Vue中hash路由和history路由的區別有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

hash路由和history路由這兩種模式的區別,從以下幾個方面梳理一下吧:

一、顏值

hash:  即地址欄 URL 中的#符號。 比如這個 URL:http://www.abc.com/#/hello, hash 的值為 #/hello。它的特點在于:hash 雖然出現在 URL 中, 但不會被包括在 HTTP 請求中,對后端完全沒有影響,因此改變 hash 不會重新加載頁面。

history: 地址欄中沒有 #。比如這個 URL:http://www.abc.com/hello,更美觀,是個正常的url,適合推廣宣傳。

二、功能

history:  在開發app的時候有分享頁面,這個分享出去的頁面就是用vue或是react做的,咱們把這個頁面分享到第三方的app里,有的app里面url是不允許帶有#號的,所以要將#號去除那么就要使用history模式,但是使用history模式還有一個問題就是,在訪問二級頁面的時候,做刷新操作,會出現404錯誤,那么就需要和后端人配合,讓他配置一下apache或是nginx的url重定向,重定向到你的首頁路由上就好了。

三、回車刷新

  • hash: 雖然出現在 URL 中,但不會被包括在 HTTP 請求中,對后端完全沒有影響,因此改變 hash 不會重新加載頁面;

  • history: 利用了 HTML5 History Interface 中新增的 pushState() replaceState() 方法。

    這兩個方法應用于瀏覽器的歷史記錄棧,在當前已有的 back()、forward()、go() 方法的基礎之上,這兩個方法提供了對歷史記錄進行修改的功能。當使用這兩個方法執行修改時,只能改變當前地址欄的 URL,但瀏覽器不會向后端發送請求,也不會觸發popstate事件的執行,一般會出現404,這時候就需要和后端人配合,設置重定向。

四、使用場景

一般情況下,hash 和 history 都可以,如果你是個顏值控,對 # 符號夾雜在 URL 里有些不爽。

如果不想要很丑的 hash,我們可以用路由的 history 模式,這種模式充分利用 history.pushState API 來完成URL 跳轉而無須重新加載頁面。調用 history.pushState() 相比于直接修改 hash,存在以下優勢:

  1. pushState() 設置的新 URL 可以是與當前 URL 同源的任意 URL;而 hash 只可修改 # 后面的部分,因此只能設置與當前 URL 同文檔的 URL;

  2. pushState() 設置的新 URL 可以與當前 URL 一模一樣,這樣也會把記錄添加到棧中;而 hash 設置的新值必須與原來不一樣才會觸發動作將記錄添加到棧中;

  3. ushState() 通過 stateObject 參數可以添加任意類型的數據到記錄中;而 hash 只可添加短字符串pushState() 可額外設置 title 屬性供后續使用。

看完了這篇文章,相信你對“Vue中hash路由和history路由的區別有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

vue
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女