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

快速掌握Vue Router使用方法

 更新時間:2023年01月09日 09:12:07   作者:酷爾。  
Vue Router是Vue.js官方的路由管理器。它和Vue.js的核心深度集成,讓構建單頁面應用變得易如反掌。路由實際上就是可以理解為指向,就是我在頁面上點擊一個按鈕需要跳轉到對應的頁面,這就是路由跳轉

本篇博客會介紹Vue中的VueRouter的基本使用,編程式路由導航增加了我們進行路由跳轉的靈活性,緩存路由組件保障了我們使用路由時的便捷性,生命周期鉤子為我們切入切出路由時提供了初始化與善后的工作,路由守衛(wèi)保障了我們路由組件的安全性,路由工作模式會使我們理解為啥Vue項目中的路由會有一個#,通過本篇博客會讓大家快速掌握Vue中路由的基本使用。

一、編程式路由導航

作用:不借助<router-link> 實現路由跳轉,讓路由跳轉更加靈活

具體編碼:

//$router的兩個API
this.$router.push({
   name:'xiangqing',
   	params:{
   		id:xxx,
   		title:xxx
   	}
})
this.$router.replace({
   name:'xiangqing',
   	params:{
   		id:xxx,
   		title:xxx
   	}
})
this.$router.forward() //前進
this.$router.back() //后退
this.$router.go() //可前進也可后退

二、緩存路由組件

在上一篇博客中也提到過,路由對應的組件隨著路由的切換來而被激活,隨著路由的切換走而失活被銷毀,在我們使用WebApp的時候當然不希望這樣的事情發(fā)生,我們希望即使有路由的切換,也要保持原有的組件不被銷毀。而緩存路由組件技術就可以完美的解決這個問題,只是在實現這一功能是會以一定的程序效率作為代價。下面咱們一起看一看如何實現路由對應組件的?;睢J褂玫降臉撕炇?code><keep-alive include="News"> </keep-alive>。

作用:讓不展示的路由組件保持掛載,不被銷毀。

具體編碼:

<keep-alive include="News"> 
    <router-view></router-view>
</keep-alive>

三、兩個新的聲明周期鉤子

作用:路由組件所獨有的兩個鉤子,用于捕獲路由組件的激活狀態(tài)。

具體名字:

  • activated路由組件被激活時觸發(fā)。
  • deactivated路由組件失活時觸發(fā)。
<template>
  <ul>
    <li :style="{opacity}">歡迎學習Vue</li>
    <li v-for="p in messageList" :key="p.id">{{p.title}} <input type="text"></li>
  </ul>
</template>
<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "News",
  props:['id','title'],
  data() {
    return {
      messageList: [
        { id: "001", title: "消息001" },
        { id: "002", title: "消息002" },
        { id: "003", title: "消息003" },
      ],
      opacity:1
    };
  },
  activated() {
  			// 開啟一個定時器,調整組件透明度
			console.log('News組件被激活了')
			this.timer = setInterval(() => {
				console.log('@')
				this.opacity -= 0.01
				if(this.opacity <= 0) this.opacity = 1
			},16)
		},
  deactivated() {
  	  //關閉定時器
      console.log('News組件失活了')
      clearInterval(this.timer)
  },
};
</script>
<style>
</style>

四、路由守衛(wèi)

路由守衛(wèi)中可以進行頁面權限的驗證,沒有權限就沒有辦法進入到相應的頁面之中。

作用:對路由進行權限控制

分類:全局守衛(wèi)、獨享守衛(wèi)、組件內守衛(wèi)

全局守衛(wèi)(所有組件間路由跳轉時都需要經過這兩個守衛(wèi)):

//全局前置守衛(wèi):初始化時執(zhí)行、每次路由切換前執(zhí)行
router.beforeEach((to,from,next)=>{
	console.log('beforeEach',to,from)
	if(to.meta.isAuth){ //判斷當前路由是否需要進行權限控制
		if(localStorage.getItem('school') === 'atguigu'){ //權限控制的具體規(guī)則
			next() //放行
		}else{
			alert('暫無權限查看')
			// next({name:'guanyu'})
		}
	}else{
		next() //放行
	}
})
//全局后置守衛(wèi):初始化時執(zhí)行、每次路由切換后執(zhí)行
router.afterEach((to,from)=>{
	console.log('afterEach',to,from)
	if(to.meta.title){ 
		document.title = to.meta.title //修改網頁的title
	}else{
		document.title = 'vue_test'
	}
})

上述兩個函數,參數中都有from 與to,這兩個是路由守衛(wèi)中超級重要的角色,權限驗證一般都有參照這兩個參數進行。

除此之外前置守衛(wèi)還有一個next參數,這個參數負責放行??煽偨Y如下:

  • from:原始路由的一些基本信息
  • to:將要跳轉的路由基本信息
  • next:如果不傳參數為放行,就是跳轉到to指定的路由,如果傳參就跳轉到參數指定的路由next(“/login”)

4.獨享守衛(wèi):這種守衛(wèi)方式只針對包含特定屬性的路由起作用例如下面一個例子,前置路由守衛(wèi),只有要跳轉的路由中的屬性isAuth為true時才進入判斷其他條件,否則會直接放行。通常我們會將用到的屬性在路由配置里定義在meta中。

{
    name:"aboutroot",
    path:"/about",
    component:About,
    meta:{
        isTrue:true
    }
},
beforeEnter(to,from,next){
	console.log('beforeEnter',to,from)
	if(to.meta.isAuth){ //判斷當前路由是否需要進行權限控制
		if(localStorage.getItem('school') === 'atguigu'){
			next()
		}else{
			alert('暫無權限查看')
			// next({name:'guanyu'})
		}
	}else{
		next()
	}
}

當然除了可以在meta中進行權限區(qū)分屬性的定義,還可以做一些全局的配置,例如跳轉路由之后的頁面頁簽。

{
    name:"aboutroot",
    path:"/about",
    component:About,
    meta:{
        isTrue:true
        title:"About組件"
    }
},

使用:

這時當進入about組件時,就會顯示頁簽為About組件,為了防止出錯,我們做一些特殊處理以下代碼在路由沒有meta.title屬性是會顯示默認頁簽在頁面的頁簽上。

router.afterEach((to,from)=>{
    console.log(to,from)
    document.title=to.meta.title || "默認頁簽"
})

效果如下面兩個圖片。

5.組件內守衛(wèi)

下面兩個路由執(zhí)行的時間是在進入相應路由之前執(zhí)行以及離開這個路由之前執(zhí)行,可以進行鑒權。

//進入守衛(wèi):通過路由規(guī)則,進入該組件時被調用
beforeRouteEnter (to, from, next) {
},
//離開守衛(wèi):通過路由規(guī)則,離開該組件時被調用
beforeRouteLeave (to, from, next) {
}

下面一個實例表示在進入這個組件時先判斷這個組間有沒有isTrue屬性,然后判斷本地存儲的學校是不是nylg,只有經過兩層驗證之后才可以進入該組件,否則將提示進不去。

<template>
  <div class="col-xs-6">
    <div class="panel">
      <div class="panel-body">
        <h2>我是About的內容</h2>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  // eslint-disable-next-line vue/multi-word-component-names
  name: "About",
  beforeRouteEnter(to,from,next){
    // alert("想要進入組件!")
    if(to.meta.isTrue){
      if(localStorage.getItem("school")==="nylg"){
        next()
      }else{
        alert("您無權進入!")
      }
    }else{
      alert("組件不允許進入!")
    }
  },
  //通過路由規(guī)則,離開該組件時被調用
  beforeRouteLeave (to, from, next) {
    console.log('About--beforeRouteLeave',to,from)
    next()
  }
};
</script>
<style>
</style>

五、路由器的兩種工作模式

對于一個url來說,什么是hash值?—— #及其后面的內容就是hash值。

hash值不會包含在 HTTP 請求中,即:hash值不會帶給服務器。

hash模式:

  • 地址中永遠帶著#號,不美觀 。
  • 若以后將地址通過第三方手機app分享,若app校驗嚴格,則地址會被標記為不合法。
  • 兼容性較好。

history模式:

  • 地址干凈,美觀 。
  • 兼容性和hash模式相比略差。
  • 應用部署上線時需要后端人員支持,解決刷新頁面服務端404的問題。

進行history配置會很麻煩,而且使用Vue時語法上要有一些改變,所以如果不是大型公司或者大型項目使用hash模式即可。感興趣的同學也可以自己探索history模式。

到此這篇關于快速掌握Vue Router使用方法的文章就介紹到這了,更多相關Vue Router內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • vue3組合式API實現todo列表效果

    vue3組合式API實現todo列表效果

    這篇文章主要介紹了vue3組合式API實現todo列表,下面用組合式?API的寫法,實現一個可新增、刪除的todo列表效果,需要的朋友可以參考下
    2024-08-08
  • Vue2?特殊符號讓人傻傻分不清?“:”、“.”、“@”、“#”?、“{{}}“?、“$“,‘$bus‘,‘$event‘

    Vue2?特殊符號讓人傻傻分不清?“:”、“.”、“@”、“#”?、“{{}}“?、“$“,‘$bus‘,‘$e

    :”是指令?“v-bind”的縮寫“.”是修飾符?“@”是指令“v-on”的縮寫?,它用于監(jiān)聽?DOM?事件?“#”是v-slot的縮寫,這篇文章主要介紹了Vue2?新手上路無處不在的特殊符號讓人傻傻分不清“:”、“.”、“@”、“#”?、“{{}}“?、“$“,$bus,$event,需要的朋友可以參考下
    2024-08-08
  • el-table?動態(tài)合并不定項多級表頭的方法

    el-table?動態(tài)合并不定項多級表頭的方法

    本文主要介紹了el-table?動態(tài)合并不定項多級表頭的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • 淺談Vue組件單元測試究竟測試什么

    淺談Vue組件單元測試究竟測試什么

    這篇文章主要介紹了淺談Vue組件單元測試究竟測試什么,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • vue3+vite中使用vuex的具體步驟

    vue3+vite中使用vuex的具體步驟

    在vue3+vite創(chuàng)建的項目中使用vuex,要注意的是vite有部分寫法和之前的webpack是不同的,這篇文章主要介紹了vue3+vite中使用vuex的具體步驟,需要的朋友可以參考下
    2022-11-11
  • Vue.js中使用${}實現變量和字符串的拼接方式

    Vue.js中使用${}實現變量和字符串的拼接方式

    這篇文章主要介紹了Vue.js中使用${}實現變量和字符串的拼接方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • vue如何將字符串的一部分處理為html文檔并渲染到頁面

    vue如何將字符串的一部分處理為html文檔并渲染到頁面

    這篇文章主要介紹了vue如何將字符串的一部分處理為html文檔并渲染到頁面,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue中實現一個項目里兼容移動端和pc端

    vue中實現一個項目里兼容移動端和pc端

    這篇文章主要介紹了vue中實現一個項目里兼容移動端和pc端問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Vue+ElementUI創(chuàng)建一個帶有進度顯示的文件下載和打包組件功能

    Vue+ElementUI創(chuàng)建一個帶有進度顯示的文件下載和打包組件功能

    如何使用 Vue 創(chuàng)建一個帶有進度顯示和打包功能的文件下載組件,我們探討了如何導入必要的包,構建組件的基礎結構,實現文件下載與進度顯示,以及如何將文件打包為 ZIP 格式供用戶下載
    2024-08-08
  • Vue中babel.config.js配置示例詳解

    Vue中babel.config.js配置示例詳解

    Babel是一個JS編譯器,主要作用是將ECMAScript2015+ 版本的代碼,轉換為向后兼容的JS語法,以便能夠運行在當前和舊版本的瀏覽器或其它環(huán)境中,下面這篇文章主要給大家介紹了關于Vue中babel.config.js配置詳解的相關資料,需要的朋友可以參考下
    2023-02-02

最新評論

乌鲁木齐县| 淳安县| 巫溪县| 鲁山县| 万年县| 中西区| 和政县| 油尖旺区| 吕梁市| 蒲江县| 卢氏县| 尉氏县| 北安市| 陕西省| 安康市| 临沧市| 唐河县| 敦煌市| 汝城县| 平定县| 华容县| 虎林市| 遂平县| 河北区| 桐乡市| 洱源县| 永寿县| 阜平县| 五寨县| 宝应县| 进贤县| 曲靖市| 兴城市| 任丘市| 惠安县| 金堂县| 青神县| 贡嘎县| 陆川县| 缙云县| 兰考县|