最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

路由的hash和history模式的區(qū)別及說明

 更新時間:2025年01月16日 08:44:28   作者:Cshaosun  
Vue-Router提供了hash模式和history模式兩種路由模式,hash模式URL帶#,支持低版本IE,history模式URL不帶#,需要服務(wù)器支持

前言

為了構(gòu)建 SPA(單頁面應(yīng)用)即不刷新整體頁面,通過地址欄中的變化來實現(xiàn)單頁面的切換等功能。

Vue-Router 用了兩種模式來實現(xiàn): hash 模式history 模式。 默認的路由模式是 hash 模式。

注:hash 模式和 history 模式都屬于瀏覽器自身的特性, Vue-Router只是利用了這兩個特性

來實現(xiàn)前端路由和頁面的關(guān)聯(lián)。

hash 模式和 history 模式最直觀的區(qū)別就是-----hash路由帶#號history路由不帶#號。

hash模式

hash 模式是開發(fā)中默認的模式, 它的 URL 帶著一個#, 例如: http://www.csy.com/#/vue, 它的 hash 值就是#/vue。

特點:

  • 當URL中的hash值發(fā)生改變時,瀏覽器不會向后端發(fā)送http請求;
  • 頁面不會重新加載

這種模式的瀏覽器支持度很好, 低版本的 IE 瀏覽器也支持這種模式。

hash模式原理

通過監(jiān)聽hashChange事件進行頁面定位,渲染不同的內(nèi)容;

window.onhashchange = function(event){// 點擊游覽器前進后退按鈕時會觸發(fā)
    console.log(event.oldURL,event.newURL);
    let hash = location.hash.slice(1);
    document.body.style.color = hash;
}

使用 onhashchange()事件的好處就是, 在頁面的 hash 值發(fā)生變化時,無需向后端發(fā)起請求, window 就可以監(jiān)聽事件的改變, 并按規(guī)則加載相應(yīng)的代碼。

除此之外, hash 值變化對應(yīng)的 URL 都會被瀏覽器記錄下來, 這樣瀏覽器就能實現(xiàn)頁面的前進和后退。

雖然是沒有請求后端服務(wù)器, 但是頁面的 hash 值和對應(yīng)的 URL 關(guān)聯(lián)起來了。

history模式

history 模式的 URL 中沒有#, 它使用的是傳統(tǒng)的路由分發(fā)模式, 即用戶在輸入一個 URL 時, 服務(wù)器會接收這個請求, 并解析這個URL, 然后做出相應(yīng)的邏輯處理。

它通過HTML5 History API 提供的 history.pushState方法或者 history.replaceState 方法,監(jiān)聽popstate事件,需要客戶端和服務(wù)端共同的支持。

pushState() 和 replaceState() 方法, 這兩個方法應(yīng)用于瀏覽器的歷史記錄棧, 提供了對歷史記錄進行修改的功能。 只是當他們進行修改時, 雖然修改了 url, 但瀏覽器不會立即向后端發(fā)送請求。 

切換歷史狀態(tài): 包括 forward()、 back()、 go()三個方法, 對應(yīng)瀏覽器的前進, 后退, 跳轉(zhuǎn)操作

注:

  • history 模式下刷新頁面請求后端是時
  • 如果后端沒有相應(yīng)的路由或資源就會出現(xiàn)404

此為前端配置

export default new Router({
    mode: 'history',
    // mode: 'hash',  //默認hash模式
    routes
})

總結(jié)

1、hash模式帶#號比較丑,history模式比較優(yōu)雅;

2、pushState設(shè)置的新的URL可以是與當前URL同源的任意URL;而hash只可修改#后面的部分,故只可設(shè)置與當前同文檔的URL;

3、pushState設(shè)置的新URL可以與當前URL一模一樣,這樣也會把記錄添加到棧中;而hash設(shè)置 的新值必須與原來不一樣才會觸發(fā)記錄添加到棧中;

4、pushState通過stateObject可以添加任意類型的數(shù)據(jù)到記錄中;而hash只可添加短字符串;

5、pushState可額外設(shè)置title屬性供后續(xù)使用;

6、history 模式下刷新頁面請求后端是時,如果后端沒有相應(yīng)的路由或資源就會出現(xiàn)404。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue 使用monaco實現(xiàn)代碼高亮

    vue 使用monaco實現(xiàn)代碼高亮

    這篇文章主要介紹了vue 使用monaco實現(xiàn)代碼高亮的方法,幫助大家更好的理解和學(xué)習使用vue框架,感興趣的朋友可以了解下
    2021-03-03
  • 解決vue-cli + webpack 新建項目出錯的問題

    解決vue-cli + webpack 新建項目出錯的問題

    下面小編就為大家分享一篇解決vue-cli + webpack 新建項目出錯的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • Vue中偵聽器的基本用法示例

    Vue中偵聽器的基本用法示例

    隨著Vue的使用越來越多,對Vue的其他知識點也開始逐漸多了解一點,這次做頁面上的計算,用了Watch偵聽器,這篇文章主要給大家介紹了關(guān)于Vue中偵聽器基本用法的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Vue 動態(tài)組件components和v-once指令的實現(xiàn)

    Vue 動態(tài)組件components和v-once指令的實現(xiàn)

    這篇文章主要介紹了Vue 動態(tài)組件components和v-once指令的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-08-08
  • websocket在vue2中的封裝使用方式

    websocket在vue2中的封裝使用方式

    這篇文章主要介紹了websocket在vue2中的封裝使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • vue3中reactive和ref的實現(xiàn)與區(qū)別詳解

    vue3中reactive和ref的實現(xiàn)與區(qū)別詳解

    reactive和ref都是vue3實現(xiàn)響應(yīng)式系統(tǒng)的api,他們是如何實現(xiàn)響應(yīng)式的呢,reactive和ref又有什么區(qū)別呢,下面小編就來和大家詳細講講,希望對大家有所幫助
    2023-10-10
  • vant picker+popup 自定義三級聯(lián)動案例

    vant picker+popup 自定義三級聯(lián)動案例

    這篇文章主要介紹了vant picker+popup 自定義三級聯(lián)動案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的方法

    vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的方法

    這篇文章主要介紹了vue2?自定義?el-radio-button?的樣式并設(shè)置默認值的操作方法,代碼分為html部分和css修改樣式代碼,代碼簡單易懂,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • vue選項卡切換登錄方式小案例

    vue選項卡切換登錄方式小案例

    這篇文章主要為大家詳細介紹了vue選項卡切換登錄方式小案例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • element-plus dialog v-loading不生效問題及解決

    element-plus dialog v-loading不生效問題及解決

    這篇文章主要介紹了element-plus dialog v-loading不生效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評論

崇礼县| 麻城市| 昌图县| 阿拉善左旗| 宁夏| 昌吉市| 新竹市| 河池市| 卢湾区| 寻甸| 嘉兴市| 湾仔区| 牙克石市| 简阳市| 开鲁县| 虹口区| 七台河市| 祁东县| 娄底市| 延吉市| 五台县| 枣庄市| 五指山市| 射洪县| 弥勒县| 论坛| 永定县| 阳原县| 灵武市| 古丈县| 什邡市| 腾冲县| 长葛市| 岳普湖县| 遂宁市| 郯城县| 洛川县| 定安县| 松江区| 汝州市| 安徽省|