国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Vue-Router模式和鉤子的用法

2019-11-19 14:16:46
字體:
來源:轉載
供稿:網友

上一篇主要寫了一下vuer-router的基本使用,可以說解決溫飽了,下面就再來點下午茶吧

模式

vue-router中的模式選項主要在router實例化的時候進行定義的,如下

const router = new VueRouter({   mode: 'history', // 兩種類型history 還有 hash   routes: routes // 可以縮寫成routes})

有兩種模式可供選擇,history 和 hash,大致對比一下,

模式 優點 缺點
hash 使用簡單、無需后臺支持 在url中以hash形式存在,不會傳到后臺
history 地址明確,便于理解和后臺處理 需要后臺配合

hash模式對于后臺來講就是一個url,因為地址中的hash值是不會傳到后臺的,所以服務器端做一個根地址的映射就可以了。
history模式最終的路由都體現在url的pathname中,這部分是會傳到服務器端的,因此需要服務端對每一個可能的path值都作相應的映射。或者采用模糊匹配的方式進行映射。

除此之外,history模式下,如果后端不是一對一的進行映射,而是模糊匹配的話,那么就要注意一下404的情況了。這個時候就需要在前端router中定義404頁面了。

404路由的定義

由于router本身的匹配是從上到下的,如果在前面找到了匹配的路由,就跳轉了。因此可以直接在最后添加404的路由,如下

let routerConfig = [{  path: '/pages',  component: App,  children: [{    path: 'demo/step1/list',    component: coupon,    name: 'coupon-list',    meta: {      title: '紅包'    }  }]}, {  path: '*',  component: NotFound,  name: 'notfound',  meta: {    title: '404-頁面丟了'  }}]

在前面匹配不到的時候,* 代表全部,就是都指向404頁面

路由鉤子

路由鉤子主要是給使用者在路由發生變化時進行一些特殊的處理而定義的,靠。。好拗口啊。

總體來講vue里面提供了三大類鉤子

1、全局鉤子
2、某個路由獨享的鉤子
3、組件內鉤子

全局鉤子

顧名思義,全局鉤子全局用,使用如下

const router = new VueRouter({  mode: 'history',  base: __dirname,  routes: routerConfig})router.beforeEach((to, from, next) => {  document.title = to.meta.title || 'demo'  if (!to.query.url && from.query.url) {    to.query.url = from.query.url  }  next()})router.afterEach(route => {})

某個路由獨享鉤子

就像說的一樣,給某個路由單獨使用的,本質上和后面的組件內鉤子是一樣的。都是特指的某個路由。不同的是,這里的一般定義在router當中,而不是在組件內。如下

const router = new VueRouter({ routes: [  {   path: '/foo',   component: Foo,   beforeEnter: (to, from, next) => {    // ...   },   beforeLeave: (to, from, next) => {    // ...   }  } ]})

組件內鉤子

首先看一下官方定義:

你可以在路由組件內直接定義以下路由導航鉤子

  1. beforeRouteEnter
  2. beforeRouteUpdate (2.2 新增)
  3. beforeRouteLeave

路由組件!路由組件!路由組件!重要的事情說三遍,大家一定要注意這里說的是“路由組件”,而路由組件!== 組件,路由組件!== 組件,路由組件!== 組件!之前一直沒注意這點,然后在子組件里面傻乎乎的調鉤子函數發現一直沒用。。。

我們先來看一下什么是路由組件?

路由組件:直接定義在router中component處的組件

也就是說router中定義的入口vue文件之外的組件,是沒有鉤子函數的,也就不用說使用了。但是如果你使用了并不會報錯,只是沒反應。(本想畫個圖的,太懶了。。。自己理解理解吧,很好理解的)

這里再回頭看下這個路由內鉤子是怎么用的,很簡單和data、method平級的方法

beforeRouteLeave(to, from, next) {  // ....  next()},beforeRouteEnter(to, from, next) {  // ....  next()},beforeRouteUpdate(to, from, next) {  // ....  next()},computed: {},method: {}

三種路由鉤子中都涉及到了三個參數,這里直接上官方介紹吧

  1. to: Route: 即將要進入的目標 路由對象
  2. from: Route: 當前導航正要離開的路由
  3. next: Function: 一定要調用該方法來 resolve 這個鉤子。執行效果依賴 next 方法的調用參數。
  4. next(): 進行管道中的下一個鉤子。如果全部鉤子執行完了,則導航的狀態就是 confirmed (確認的)。
  5. next(false): 中斷當前的導航。如果瀏覽器的 URL 改變了(可能是用戶手動或者瀏覽器后退按鈕),那么 URL 地址會重置到 from 路由對應的地址。
  6. next(‘/') 或者 next({ path: ‘/' }): 跳轉到一個不同的地址。當前的導航被中斷,然后進行一個新的導航。

模式和鉤子基本就到這了,有需要的可以在仔細研究一個官當的文檔。以上僅是個人學習使用過程的一些理解,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安西县| 阳信县| 舞钢市| 黄平县| 无棣县| 蕉岭县| 韶关市| 湟源县| 吴川市| 抚顺县| 香河县| 东乡县| 巴彦淖尔市| 饶河县| 凭祥市| 万宁市| 綦江县| 江都市| 木里| 萍乡市| 德安县| 宁都县| 横峰县| 通渭县| 五台县| 湖南省| 满洲里市| 玉树县| 基隆市| 新疆| 许昌县| 囊谦县| 抚宁县| 托克托县| 黔西| 南华县| 娄底市| 肇源县| 宁阳县| 虞城县| 什邡市|