首頁 web前端 js教程 如何使用Vue-Router模式和鉤子(詳細教學)

如何使用Vue-Router模式和鉤子(詳細教學)

Jun 02, 2018 pm 05:42 PM
vue-router 模式 鉤子

這篇文章主要介紹了Vue-Router模式和鉤子的用法,現在分享給大家,也給大家做個參考。

上一篇主要寫了一下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: ‘/' }): 跳到一個不同的位址。目前的導航被中斷,然後進行一個新的導航。

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

jQuery取代節點元素的操作方法

#Servlet3.0與純javascript透過Ajax互動的實例詳解

vue 實作的樹形菜的實例代碼

##

以上是如何使用Vue-Router模式和鉤子(詳細教學)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

微信的免打擾模式有什麼作用 微信的免打擾模式有什麼作用 Feb 23, 2024 pm 10:48 PM

微信勿擾模式什麼意思如今,隨著智慧型手機的普及和行動網路的快速發展,社群媒體平台已成為人們日常生活中不可或缺的一部分。而微信作為國內最受歡迎的社群媒體平台之一,幾乎每個人都有一個微信帳號。我們可以透過微信與朋友、家人、同事進行即時溝通,分享生活中的點滴,了解彼此的近況。然而,在這個時代,我們也不可避免地面臨資訊過載和隱私洩漏的問題,特別是對於那些需要專注或

iPhone上的睡眠模式有何用途? iPhone上的睡眠模式有何用途? Nov 04, 2023 am 11:13 AM

長期以來,iOS設備一直能夠使用「健康」應用程式追蹤您的睡眠模式等。但是,當您在睡覺時被通知打擾時,這不是很煩人嗎?這些通知可能無關緊要,因此在此過程中會擾亂您的睡眠模式。雖然免打擾模式是避免睡覺時分心的好方法,但它可能會導致您錯過夜間收到的重要電話和訊息。值得慶幸的是,這就是睡眠模式的用武之地。讓我們了解更多關於它以及如何在iPhone上使用它的資訊。睡眠模式在iPhone上有什麼作用睡眠模式是iOS中專用的專注模式,會根據你在「健康」App中的睡眠定時自動啟動。它可以幫助您設定鬧鐘,然後可以

Vue應用程式中遇到vue-router的錯誤「NavigationDuplicated: Avoided redundant navigation to current location」 – 怎麼解決? Vue應用程式中遇到vue-router的錯誤「NavigationDuplicated: Avoided redundant navigation to current location」 – 怎麼解決? Jun 24, 2023 pm 02:20 PM

Vue應用程式中遇到vue-router的錯誤「NavigationDuplicated:Avoidedredundantnavigationtocurrentlocation」–怎麼解決? Vue.js作為快速且靈活的JavaScript框架在前端應用開發中越來越受歡迎。 VueRouter是Vue.js的一個程式碼庫,用來進行路由管理。然而,有時

請勿打擾模式在iPhone中不起作用:修復 請勿打擾模式在iPhone中不起作用:修復 Apr 24, 2024 pm 04:50 PM

即使在「請勿打擾」模式下接聽電話也可能是一種非常煩人的體驗。顧名思義,請勿打擾模式可關閉來自郵件、訊息等的所有來電通知和警報。您可以按照這些解決方案集進行修復。修復1–啟用對焦模式在手機上啟用對焦模式。步驟1–從頂部向下滑動以存取控制中心。步驟2–接下來,在手機上啟用「對焦模式」。專注模式可在手機上啟用「請勿打擾」模式。它不會讓您的手機上出現任何來電提醒。修復2–更改對焦模式設定如果對焦模式設定中存在一些問題,則應進行修復。步驟1–打開您的iPhone設定視窗。步驟2–接下來,開啟「對焦」模式設

epc+o模式是什麼意思 epc+o模式是什麼意思 Nov 09, 2022 am 10:54 AM

epc+o模式是指設計、採購等等為一體的總承包框架,它是在epc裡面引申出來的一些運營環節;即在建設期內時,總承包商除了要去承擔傳統意義上的設計任務以外,還要去包攬在營運期間內的所有維護任務。此模式可以大幅提高許多專案的營運效率,也可以迅速降低營運成本。

iPhone 15 Pro:如何擺脫狀態列中的靜音模式符號 iPhone 15 Pro:如何擺脫狀態列中的靜音模式符號 Sep 24, 2023 pm 10:01 PM

在iPhone15Pro和iPhone15ProMax型號上,Apple推出了一個實體可編程的動作按鈕,取代了音量按鈕上方的傳統響鈴/靜音開關。可以對操作按鈕進行編程以執行幾種不同的功能,但是在靜音和響鈴模式之間切換的能力並沒有消失。預設情況下,長按一次操作按鈕將使裝置靜音,按鈕的觸覺回饋將發出三個脈衝。兩款iPhone15Pro機型在狀態欄中的時間旁邊都會顯示一個劃掉的鈴鐺符號,表示靜音/靜音模式已激活,並且它將一直保持到您再次長按“操作”按鈕取消設備靜音。如果您傾向於將iPhone置於靜音模

如何啟用「記事本++深色模式」和「記事本++深色主題」? 如何啟用「記事本++深色模式」和「記事本++深色主題」? Oct 27, 2023 pm 11:17 PM

記事本++暗模式v8.0沒有參數,Notepad++是最有用的文字編輯器。在Windows10上執行的每個應用程式都支援暗模式。您可以命名網頁瀏覽器,例如Chrome、Firefox和MicrosoftEdge。如果您在記事本++上工作,預設的白色背景可能會傷害您的眼睛。開發人員已將暗模式加入到版本8的Notepad++中,這是開啟它的方法。為Windows11/10啟用記事本++暗模式啟動記事本++點選「設定」>「首選項」>「暗模式」選擇「啟用深色模式」重新啟動記

iOS 17中的待機模式使用指南 iOS 17中的待機模式使用指南 Aug 22, 2023 pm 04:01 PM

待機模式即將透過iOS17進入iPhone,本指南旨在向您展示如何在iPhone上使用此功能。待機模式是一項突破性功能,可將iPhone轉換為動態、始終開啟的智慧顯示器。當您的iPhone在充電過程中水平側放時,它會啟動待機模式。此模式精美地展示了大量有用的小部件,包括但不限於當前時間、當地天氣更新、您喜歡的照片的幻燈片,甚至是音樂播放控制。此模式的一個顯著優點是它能夠顯示通知,允許用戶查看和參與通知,而無需完全喚醒他們的iPhone。如何使用待機模式要使待機模式正常運行,iPhone必須運行i

See all articles