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

vue前端路由以及vue-router兩種模式實(shí)例詳解

 更新時(shí)間:2022年03月05日 10:13:57   作者:Serendipity  
路由這個(gè)概念最先是后端出現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于vue前端路由以及vue-router兩種模式的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

路由這個(gè)概念最早在后端出現(xiàn),隨后前后端分離,直至當(dāng)今的單頁(yè)面應(yīng)用,路由也在一直發(fā)生變化。本文來(lái)總結(jié)一下路由變化和vue-router中的路由模式區(qū)別相關(guān)知識(shí)點(diǎn)。

1、什么是前端路由

(1)后端路由階段

早期的頁(yè)面都是由html頁(yè)面在服務(wù)端渲染的,服務(wù)端直接返回給客戶端渲染好的html頁(yè)面供展示,一個(gè)頁(yè)面對(duì)應(yīng)一個(gè)URL,首先向服務(wù)端請(qǐng)求對(duì)應(yīng)的URL,服務(wù)器根據(jù)此URL去匹配對(duì)應(yīng)的controller,最終生成html頁(yè)面返回給客戶端。這種方法有利于SEO的優(yōu)化,但是這種頁(yè)面html和數(shù)據(jù)邏輯混合在一塊,開(kāi)發(fā)人員開(kāi)發(fā)維護(hù)起來(lái)困難。

(2)前后端分離路由階段

隨著Ajax的出現(xiàn),由了前后端分離的開(kāi)發(fā)方式,后端只負(fù)責(zé)邏輯處理和返回?cái)?shù)據(jù),前端只負(fù)責(zé)通過(guò)ajax將數(shù)據(jù)渲染到頁(yè)面。

(3)單頁(yè)面應(yīng)用階段

其實(shí)SPA最主要的特點(diǎn)就是在前后端分離的基礎(chǔ)上加了一層前端路由.也就是前端來(lái)維護(hù)一套路由規(guī)則。

2、vue-router 提供了 hash 和 history 兩種路由模式

vue-router的作用就是通過(guò)改變URL,在不重新請(qǐng)求頁(yè)面的情況下,更新頁(yè)面視圖。簡(jiǎn)單的說(shuō)就是,雖然地址欄的地址改變了,但是并不是一個(gè)全新的頁(yè)面,而是之前的頁(yè)面某些部分進(jìn)行了修改。要想解決上面的問(wèn)題,前提需要知道瀏覽器window的history對(duì)象和location對(duì)象的hash屬性(詳情見(jiàn) history對(duì)象詳解),這兩個(gè)對(duì)象分別存在頁(yè)面路徑跳轉(zhuǎn),但是頁(yè)面不刷新的功能。

(1)hash模式

對(duì)應(yīng)了location對(duì)象的hash屬性,vue-router 默認(rèn) hash 模式,使用 URL 的 hash 來(lái)模擬一個(gè)完整的 URL,于是當(dāng) URL 改變時(shí),頁(yè)面不會(huì)重新加載。

location.hash 對(duì)應(yīng) "(#)" 后面的字符串,比如:https://xxx.cn/xxx/6844904062698127367#heading  對(duì)應(yīng)的值為 "#heading",后面 hash 值的變化,并不會(huì)導(dǎo)致瀏覽器向服務(wù)器發(fā)出請(qǐng)求,瀏覽器不發(fā)出請(qǐng)求,也就不會(huì)刷新頁(yè)面。另外每次  hash  值的變化,還會(huì)觸發(fā) hashchange  這個(gè)事件,通過(guò)這個(gè)事件我們就可以知道 hash 值發(fā)生了哪些變化。然后我們便可以監(jiān)聽(tīng) hashchange 來(lái)實(shí)現(xiàn)更新頁(yè)面部分內(nèi)容的操作:比如下面的代碼監(jiān)聽(tīng)一個(gè)網(wǎng)頁(yè) hash 值變化

window.addEventListener('hashchange', function() {
            console.log('The hash has changed!')
        }, false);

當(dāng)網(wǎng)頁(yè)點(diǎn)擊返回或者前進(jìn)的時(shí)候,hash值會(huì)發(fā)生變化,會(huì)觸發(fā)上面的hashchange事件并打印。

(2)history模式

如果不想要很丑的 hash,我們可以用路由的 history 模式,這種模式充分利用 history.pushState API 來(lái)完成 URL 跳轉(zhuǎn)而無(wú)須重新加載頁(yè)面,同時(shí)還有popstate 事件來(lái)監(jiān)聽(tīng)state變化,這樣地址欄中路徑就沒(méi)有了"#",但是當(dāng)用戶使用了刷新等操作的時(shí)候,瀏覽器會(huì)給服務(wù)器發(fā)送請(qǐng)求,為了避免這種情況出現(xiàn),所以這個(gè)實(shí)現(xiàn)需要服務(wù)端的支持,需要把所有路由都重定向到根路由,這里省略服務(wù)端的配置。

window.addEventListener('popstate', function() {
            console.log('The state has changed!')
        }, false);

(3)兩種模式的比較

 同:hash和history都是屬于瀏覽器自身的特性,Vue-router只是利用了這兩個(gè)特性(通過(guò)調(diào)用瀏覽器接口)來(lái)實(shí)現(xiàn)前端路由。

  不同:hash模式 會(huì)在瀏覽器的URL中加入'#',而HTM5History就沒(méi)有'#'號(hào),URL和正常的URL一樣。

history比于直接修改hash主要有以下優(yōu)勢(shì):a、pushState設(shè)置的新URL可以是與當(dāng)前URL同源的任意URL;而hash只可修改#后面的部分,故只可設(shè)置與當(dāng)前同文檔的URL;b、pushState設(shè)置的新URL可以與當(dāng)前URL一模一樣,這樣也會(huì)把記錄添加到棧中;而hash設(shè)置的新值必須與原來(lái)不一樣才會(huì)觸發(fā)記錄添加到棧中;c、pushState通過(guò)stateObject可以添加任意類型的數(shù)據(jù)到記錄中;而hash只可添加短字符串,且pushState可額外設(shè)置title屬性供后續(xù)使用。

補(bǔ)充:路由模式解析

要講vue-router的路由模式,首先要了解的一點(diǎn)就是路由是由多個(gè)URL組成的,使用不同的URL可以相應(yīng)的導(dǎo)航到不同的位置。

如果有進(jìn)行過(guò)服務(wù)器開(kāi)發(fā)或者對(duì)http協(xié)議有所了解就會(huì)知道,瀏覽器中對(duì)頁(yè)面的訪問(wèn)是無(wú)狀態(tài)的,所以我們?cè)谇袚Q不同的頁(yè)面時(shí)都會(huì)重新進(jìn)行請(qǐng)求。而實(shí)際使用vue和vue-router開(kāi)發(fā)就會(huì)明白,在切換頁(yè)面時(shí)是沒(méi)有重新進(jìn)行請(qǐng)求的,使用起來(lái)就好像頁(yè)面是有狀態(tài)的,這是什么原因呢。

這其實(shí)是借助了瀏覽器的History API來(lái)實(shí)現(xiàn)的,這樣可以使得頁(yè)面跳轉(zhuǎn)而不刷新,頁(yè)面的狀態(tài)就被維持在瀏覽器中了。

vue-router中默認(rèn)使用的是hash模式,也就是會(huì)出現(xiàn)如下的URL:,URL中帶有#號(hào)

我們可以用如下代碼修改成history模式

import Vue from 'vue'
import Router from 'vue-router'
import Main from '@/components/Main'
Vue.use(Router)

export default new Router({
  <strong>mode: </strong><strong>'history'</strong><strong>,</strong>
  routes: [
    {
      path: '/',
      component: Main
    }
  ]
})

這樣子URL中的#號(hào)就被去除了。

實(shí)際上存在三種模式:

Hash: 使用URL的hash值來(lái)作為路由。支持所有瀏覽器。

History: 以來(lái)HTML5 History API 和服務(wù)器配置。參考官網(wǎng)中HTML5 History模式

Abstract: 支持所有javascript運(yùn)行模式。如果發(fā)現(xiàn)沒(méi)有瀏覽器的API,路由會(huì)自動(dòng)強(qiáng)制進(jìn)入這個(gè)模式。

總結(jié)

到此這篇關(guān)于vue前端路由以及vue-router兩種模式的文章就介紹到這了,更多相關(guān)vue路由及vue-router模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue-cli@3.0 插件系統(tǒng)簡(jiǎn)析

    Vue-cli@3.0 插件系統(tǒng)簡(jiǎn)析

    Vue-cli@3.0 是一個(gè)全新的 Vue 項(xiàng)目腳手架。這篇文章主要介紹了Vue-cli@3.0 插件系統(tǒng)簡(jiǎn)析,需要的朋友可以參考下
    2018-09-09
  • Vue3父組件訪問(wèn)子組件方法/屬性的五種方案

    Vue3父組件訪問(wèn)子組件方法/屬性的五種方案

    在Vue3的組件化開(kāi)發(fā)中,父子組件間的通信是核心功能之一,本文將詳細(xì)介紹五種父組件訪問(wèn)子組件屬性/方法的實(shí)現(xiàn)方案,包含最新的<script setup>語(yǔ)法糖實(shí)踐,需要的朋友可以參考下
    2025-03-03
  • vue之proxyTable代理超全面配置方式

    vue之proxyTable代理超全面配置方式

    本文作者分享了使用Vue進(jìn)行代理配置的個(gè)人經(jīng)驗(yàn),介紹了如何使用proxyTable進(jìn)行跨域請(qǐng)求配置,并提供了具體的配置文件和使用方法,便于同行參考和學(xué)習(xí)
    2024-10-10
  • vue中常用的縮寫(xiě)方式

    vue中常用的縮寫(xiě)方式

    這篇文章主要介紹了vue中常用的縮寫(xiě)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 解決vue admin element noCache設(shè)置無(wú)效的問(wèn)題

    解決vue admin element noCache設(shè)置無(wú)效的問(wèn)題

    今天小編就為大家分享一篇解決vue admin element noCache設(shè)置無(wú)效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue 純js監(jiān)聽(tīng)滾動(dòng)條到底部的實(shí)例講解

    vue 純js監(jiān)聽(tīng)滾動(dòng)條到底部的實(shí)例講解

    今天小編就為大家分享一篇vue 純js監(jiān)聽(tīng)滾動(dòng)條到底部的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 解決Vue2.x父組件與子組件之間的雙向綁定問(wèn)題

    解決Vue2.x父組件與子組件之間的雙向綁定問(wèn)題

    這篇文章主要介紹了解決Vue2.x父組件與子組件之間的雙向綁定問(wèn)題,需要的朋友可以參考下
    2018-03-03
  • vue實(shí)現(xiàn)div單選多選功能

    vue實(shí)現(xiàn)div單選多選功能

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)div單選多選功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 如何在vue項(xiàng)目中嵌入jsp頁(yè)面的方法(2種)

    如何在vue項(xiàng)目中嵌入jsp頁(yè)面的方法(2種)

    這篇文章主要介紹了如何在vue項(xiàng)目中嵌入jsp頁(yè)面的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Vue 3.0雙向綁定原理的實(shí)現(xiàn)方法

    Vue 3.0雙向綁定原理的實(shí)現(xiàn)方法

    這篇文章主要為大家詳細(xì)介紹了Vue 3.0雙向綁定原理的實(shí)現(xiàn)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評(píng)論

宜章县| 田林县| 湛江市| 任丘市| 鹤山市| 兰溪市| 呼玛县| 博罗县| 广德县| 吉林省| 札达县| 福安市| 罗定市| 濉溪县| 武城县| 福鼎市| 枣阳市| 资阳市| 体育| 分宜县| 乐亭县| 武安市| 彭水| 清涧县| 和政县| 阳城县| 察雅县| 岳阳县| 尼勒克县| 彝良县| 高青县| 奇台县| 米易县| 丹寨县| 和静县| 义乌市| 兴隆县| 西乌| 米脂县| 巴楚县| 丽江市|