亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue的三種路由模式總結(jié)

 更新時(shí)間:2022年03月31日 11:03:55   作者:兔圖吐禿  
這篇文章主要介紹了Vue的三種路由模式總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

路由模式解析

這里要講vue-router的路由模式,首先要了解的一點(diǎn)就是路由是由多個URL組成的,使用不同的URL可以相應(yīng)的導(dǎo)航到不同的位置。如果有進(jìn)行過服務(wù)器開發(fā)或者對http協(xié)議有所了解就會知道,瀏覽器中對頁面的訪問是無狀態(tài)的,所以我們在切換不同的頁面時(shí)都會重新進(jìn)行請求。

而實(shí)際使用vue和vue-router開發(fā)就會明白,在切換頁面時(shí)是沒有重新進(jìn)行請求也沒有重新刷新頁面,使用起來就好像頁面是有狀態(tài)的,這是什么原因呢。

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

1.hash模式

使用 URL 的 hash 來模擬一個完整的 URL,于是當(dāng) URL 改變時(shí),頁面不會重新加載,其顯示的網(wǎng)路路徑中會有 “#” 號,有一點(diǎn)點(diǎn)丑。這是最安全的模式,因?yàn)樗嫒菟械臑g覽器和服務(wù)器。

2.history模式

美化后的hash模式,會去掉路徑中的 “#”。依賴于Html5 的history,pushState API,所以要擔(dān)心IE9以及一下的版本,感覺不用擔(dān)心。并且還包括back、forward、go三個方法,對應(yīng)瀏覽器的前進(jìn),后退,跳轉(zhuǎn)操作。就是瀏覽器左上角的前進(jìn)、后退等按鈕進(jìn)行的操作。

history.go(-2);//后退兩次
history.go(2);//前進(jìn)兩次
history.back(); //后退
hsitory.forward(); //前進(jìn)

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

總結(jié)一下

  • hash模式(vue-router默認(rèn)模式URL后面帶#)使用URL的hash值來作為路由,支持所有瀏覽器 缺點(diǎn):只能改變#后面的來實(shí)現(xiàn)路由跳轉(zhuǎn)。
  • history模式(通過mode: 'history’來改變?yōu)閔istory模式)HTML5 (BOM)History API 和服務(wù)器配置 缺點(diǎn):怕刷新如果后端沒有處理這個情況的時(shí)候前端刷新就是實(shí)實(shí)在在的請求服務(wù)器這樣消耗的時(shí)間很多還很慢。

3.abstract模式

適用于所有JavaScript環(huán)境,例如服務(wù)器端使用Node.js。如果沒有瀏覽器API,路由器將自動被強(qiáng)制進(jìn)入此模式。

然后在

const router = new VueRouter({routes, mode:'hash|history|abstract',})

這里進(jìn)行切換。

路由三個基本概念

路由中有三個基本的概念 route, routes, router

  • route是一條路由,由這個英文單詞也可以看出來,它是單數(shù), Home按鈕 => home內(nèi)容, 這是一條route, about按鈕 => about 內(nèi)容, 這是另一條路由
  • routes 是一組路由,把上面的每一條路由組合起來,形成一個數(shù)組。[{home 按鈕 =>home內(nèi)容 }, { about按鈕 => about 內(nèi)容}]
  • router 是一個機(jī)制,相當(dāng)于一個管理者,它來管理路由。因?yàn)閞outes 只是定義了一組路由,它放在哪里是靜止的。當(dāng)用戶點(diǎn)擊home 按鈕的時(shí)候,router 到routes 中去查找,去找到對應(yīng)的 home 內(nèi)容,所以頁面中就顯示了 home 內(nèi)容。

客戶端中的路由,實(shí)際上就是dom 元素的顯示和隱藏。當(dāng)頁面中顯示home 內(nèi)容的時(shí)候,about 中的內(nèi)容全部隱藏,反之也是一樣??蛻舳寺酚捎袃煞N實(shí)現(xiàn)方式:基于hash 和基于html5 history api.

router-view:主要是構(gòu)建 SPA (單頁應(yīng)用) 時(shí),方便渲染你指定路由對應(yīng)的組件。你可以 router-view 當(dāng)做是一個容器,它渲染的組件是你使用 vue-router 指定的

vue中實(shí)現(xiàn)路由還是相對簡單的

因?yàn)槲覀冺撁嬷兴袃?nèi)容都是組件化的,我們只要把路徑和組件對應(yīng)起來就可以了,然后在頁面中把組件渲染出來。

1.頁面實(shí)現(xiàn)(html模版中)

在vue-router中, 我們看到它定義了兩個標(biāo)簽<router-link> 和<router-view>來對應(yīng)點(diǎn)擊和顯示部分。<router-link> 就是定義頁面中點(diǎn)擊的部分,<router-view> 定義顯示部分,就是點(diǎn)擊后,區(qū)配的內(nèi)容顯示在什么地方。所以<router-link> 還有一個非常重要的屬性 to,定義點(diǎn)擊之后,要到哪里去, 如:<router-link to="/home">Home</router-link>

2. js 中配置路由

首先要定義route, 一條路由的實(shí)現(xiàn)。它是一個對象,由兩個部分組成: path和component. path 指路徑,component 指的是組件。如:{path:’/home’, component: home}

我們這里有兩條路由,組成一個routes:

const routes = [
{ path: '/home', component: Home },
{ path: '/about', component: About }
]

最后創(chuàng)建router 對路由進(jìn)行管理,它是由構(gòu)造函數(shù) new vueRouter() 創(chuàng)建,接受routes 參數(shù)

const router = new VueRouter({
routes // routes: routes 的簡寫
})

配置完成后,把router 實(shí)例注入到 vue 根實(shí)例中,就可以使用路由了

const app = new Vue({
router
}).$mount('#app')

執(zhí)行過程:當(dāng)用戶點(diǎn)擊 router-link 標(biāo)簽時(shí),會去尋找它的 to 屬性, 它的 to 屬性和 js中配置的路徑{ path: ‘/home’, component: Home} path 一一對應(yīng),從而找到了匹配的組件, 最后把組件渲染到<router-view> 標(biāo)簽所在的地方。所有的這些實(shí)現(xiàn)才是基于hash 實(shí)現(xiàn)的。

vue-cli創(chuàng)建一個項(xiàng)目體驗(yàn)一下, 安裝vue-router

1.在src 目錄下新建兩個組件

home.vue 和 about.vue

<template>
<div>
<h1>home</h1>
<p>{{msg}}</p>
</div>
</template>
<script>
export default {
data () {
return {
msg: "我是home 組件"
? ? }
? }
}
</script>
<template>
<div>
<h1>about</h1>
<p>{{aboutMsg}}</p>
</div>
</template>
<script>
export default {
data () {
return {
aboutMsg: '我是about組件'
}
}
}
</script>

2.在 App.vue中 定義<router-link > 和 </router-view>

<template>
<div id="app">
<img src="./assets/logo.png">
<header>
<!-- router-link 定義點(diǎn)擊后導(dǎo)航到哪個路徑下 -->
<router-link to="/home">Home</router-link>
<router-link to="/about">About</router-link>
</header>
<!-- 對應(yīng)的組件內(nèi)容渲染到router-view中 -->
<router-view></router-view>
</div>
</template>
<script>
export default {
}
</script>

3.在 src目錄下再新建一個router.js 定義router

就是定義 路徑到 組件的 映射。

import Vue from "vue";
import VueRouter from "vue-router";
// 引入組件
import home from "./home.vue";
import about from "./about.vue";
// 要告訴 vue 使用 vueRouter
Vue.use(VueRouter);
const routes = [
{
path:"/home",
component: home
},
{
path: "/about",
component: about
}
]
var router = new VueRouter({
routes
})
export default router;

4.把路由注入到根實(shí)例中,啟動路由

這里其實(shí)還有一種方法,就像vuex store 注入到根實(shí)例中一樣,我們也可以把vueRouter 直接注入到根實(shí)例中。在main.js中引入路由,注入到根實(shí)例中。

import Vue from 'vue'
import App from './App.vue'
// 引入路由
import router from "./router.js"
new Vue({
el: '#app',
router, // 注入到根實(shí)例中
render: h => h(App)
})

5.這時(shí)點(diǎn)擊頁面上的home 和about 可以看到組件來回切換

但是有一個問題,當(dāng)首次進(jìn)入頁面的時(shí)候,頁面中并沒有顯示任何內(nèi)容。這是因?yàn)槭状芜M(jìn)入頁面時(shí),它的路徑是 ‘/’,我們并沒有給這個路徑做相應(yīng)的配置。

一般,頁面一加載進(jìn)來都會顯示home頁面,我們也要把這個路徑指向home組件。但是如果我們寫{ path: ‘/’, component: Home },vue 會報(bào)錯,因?yàn)閮蓷l路徑卻指向同一個方向。

這怎么辦?這需要重定向,所謂重定向,就是重新給它指定一個方向,它本來是訪問 / 路徑,我們重新指向‘/home’, 它就相當(dāng)于訪問 ‘/home’, 相應(yīng)地, home組件就會顯示到頁面上。vueRouter中用 redirect 來定義重定向。

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

相關(guān)文章

  • vue axios重復(fù)點(diǎn)擊取消上一次請求封裝的方法

    vue axios重復(fù)點(diǎn)擊取消上一次請求封裝的方法

    這篇文章主要介紹了vue axios重復(fù)點(diǎn)擊取消上一次請求封裝的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 深入了解Vue中單向數(shù)據(jù)流的原理與管理

    深入了解Vue中單向數(shù)據(jù)流的原理與管理

    在Vue中,數(shù)據(jù)流是指數(shù)據(jù)的傳遞和管理方式,而Vue采用的是單向數(shù)據(jù)流,所以這篇文章就來就來和大家講講什么是Vue的數(shù)據(jù)流以及如何進(jìn)行數(shù)據(jù)流管理,感興趣的可以了解一下
    2023-06-06
  • vue keep-alive 動態(tài)刪除組件緩存的例子

    vue keep-alive 動態(tài)刪除組件緩存的例子

    今天小編就為大家分享一篇vue keep-alive 動態(tài)刪除組件緩存的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 使用vant-uploader上傳照片無法刪除的解決

    使用vant-uploader上傳照片無法刪除的解決

    這篇文章主要介紹了使用vant-uploader上傳照片無法刪除的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue中van-picker的選項(xiàng)插槽的使用

    vue中van-picker的選項(xiàng)插槽的使用

    這篇文章主要介紹了vue中van-picker的選項(xiàng)插槽的使用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Vue3中?引入Ant?Design的操作方法

    Vue3中?引入Ant?Design的操作方法

    Ant?Design?是一個開源庫,可讓您創(chuàng)建吸引人的響應(yīng)式網(wǎng)站。如果您想使用經(jīng)過充分測試且易于學(xué)習(xí)的框架,那么它是您下一個項(xiàng)目的絕佳選擇,這篇文章主要介紹了如何在?Vue?3?中使用?Ant?Design,需要的朋友可以參考下
    2023-04-04
  • 解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理)

    解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理)

    本篇文章主要介紹了解決Vue2.0自帶瀏覽器里無法打開的原因(兼容處理),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-07-07
  • 在同一個Vue項(xiàng)目中的不同vue和HTML頁面之間進(jìn)行跳轉(zhuǎn)方式

    在同一個Vue項(xiàng)目中的不同vue和HTML頁面之間進(jìn)行跳轉(zhuǎn)方式

    這篇文章主要介紹了在同一個Vue項(xiàng)目中的不同vue和HTML頁面之間進(jìn)行跳轉(zhuǎn)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    Vue中Video標(biāo)簽播放解析后短視頻去水印無響應(yīng)解決

    這篇文章主要為大家介紹了Vue中使用Video標(biāo)簽播放?<解析后的短視頻>去水印視頻無響應(yīng)的解決方式,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-04-04
  • vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單

    vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單

    這篇文章主要介紹了vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學(xué)習(xí)表單的相關(guān)知識,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2018-09-09

最新評論