【Vue】路由

来源:https://www.cnblogs.com/WilsonPan/archive/2020/04/24/12770411.html
-Advertisement-
Play Games

快速入門 1. 安裝路由 npm install --save vue-router 2. 定義組件 <template> <div> <h3>Home</h3> <router-link to="/login">Login</router-link> </div> </template> <scr ...


快速入門

1. 安裝路由

npm install --save vue-router

2. 定義組件

<template>
  <div>
    <h3>Home</h3>
    <router-link to="/login">Login</router-link>
  </div>
</template>
<script>
export default {};
</script>

3. 定義路由規則

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

export default new VueRouter({
    mode: 'history',
    routes: [
        { path: '/', component: () => import('../views/home.vue') },
        { path: '/login', component: () => import('../views/login.vue') },
    ]
});

4. 在需要顯示路由位置放<router-view />

<router-view />

這就完成一個簡單路由

 

深入路由

 

基礎

VueRouter.model :

  • hash(預設):使用 URL 的 hash 來模擬一個完整的 URL
  • history :利用 history.pushState API 來完成 URL 跳轉而無須重新載入頁面

<router-link> : 路由功能導航,預設生成<a>標簽,可以使用tag屬性修改生成的標簽

<router-view /> : 路由出口,匹配到的路由會在這裡渲染

 

動態路由

通常鏈接需要帶上參數,根據參數顯示不同結果

Vue動態路由用":" 匹配路徑參數,然後就匹配的參數放入$route.params

1. 定義動態路由,這裡需要對路由命名,獲取名稱和性別

{ path: '/login/:username/:sex', name: 'login', component: () => import('../views/login.vue') },

 

2. 路由鏈接 - 需要路由命名

<router-link :to="{ name: 'login',  params: { username, sex } }">Login</router-link>
<!--等價於-->
<router-link to="/login/WilsonPan/1">Login</router-link>

 

3. 組件獲取路由參數

<h3>username : {{ this.$route.params.username }}</h3>
<h3>sex : {{ this.$route.params.sex === 1 ? "男" : "女" }}</h3>

 

註:除了可以設置路由參數,還可以設置query參數

<router-link :to="{ name: 'login', query: { id: 3 }, params: { username, sex } }">Login</router-link>
<!--等價於-->
<router-link to="/login/WilsonPan/1?id=3">Login</router-link>

 

組件獲取query參數

<h3>id : {{ this.$route.query.id }}</h3>

 

嵌套路由

一個路由渲染的頁麵包含另外的路由

1. 定義路由

{
            path: '/', 
            name: 'home', 
            component: () => import('../views/home.vue'), 
            children: [
                { path: '/', component: () => import('../components/ComponentDemo.vue') },
                { path: '/directives', component: () => import('../components/Directives.vue') }

            ]
        }

 

2. 在需要顯示子路由的地方放子路由渲染頁面

 

<router-view />

 

導航守衛

導航守衛主要用來通過跳轉或取消的方式守衛導航,導航守衛有全局的,單個路由的,組件級別,用於未登錄控制訪問,控制訪問等。

全局路由

const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
  // ...
})

 

  • to: Route: 即將要進入的目標路由對象
  • from: Route: 當前導航正要離開的路由
  • next: Function: 一定要調用該方法來 **resolve** 這個鉤子。執行效果依賴 next 方法的調用參數。

路由獨享的守衛

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

 

組件內的守衛

 

const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // 在渲染該組件的對應路由被 confirm 前調用
    // 不!能!獲取組件實例 `this`
    // 因為當守衛執行前,組件實例還沒被創建
  },
  beforeRouteUpdate (to, from, next) {
    // 在當前路由改變,但是該組件被覆用時調用
    // 舉例來說,對於一個帶有動態參數的路徑 /foo/:id,在 /foo/1 和 /foo/2 之間跳轉的時候,
    // 由於會渲染同樣的 Foo 組件,因此組件實例會被覆用。而這個鉤子就會在這個情況下被調用。
    // 可以訪問組件實例 `this`
  },
  beforeRouteLeave (to, from, next) {
    // 導航離開該組件的對應路由時調用
    // 可以訪問組件實例 `this`
  }
}

轉發請標明出處:https://www.cnblogs.com/WilsonPan/p/12770411.html


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 項目啟動優化是每個APP都可以接入的技術,只不過針對不同的業務邏輯我們需要有不一樣的解決方案,因為有大部分人的“優化”,是在處理自己放蕩不羈的代碼。 既然這裡我們要討論啟動優化,那麼我們從啟動檢測開始。啟動檢測一般我們會以main函數作為分割點,main之前和main之後。 main之前稱為per- ...
  • 目錄:andorid jar/庫源碼解析 EventBus: 作用: 用於不同Activity,Service等之間傳遞消息(數據)。 慄子: A頁面:onCreate定義 EventBus.getDefault().register(this); onDestroy定義 EventBus.getD ...
  • 所謂懶載入就是在圖片進入 *可視區域* 前,用 *同一張* 圖片作為圖片的 src 屬性值,這樣可減少請求及帶寬。懶載入的重點是:判斷元素是否進入可視區域?元素距離文檔頂部高度(這個值固定不變) - 整個文檔被滾動高度(瀏覽器滾動條向下滾動高度) <= 可視高度,表示元素進入可視區域Demo: <! ...
  • + 作用:通過指定函數對數組進行處理,並將處理後的結果以新數組的形式返回 + 註意點:不會改變原數組,只是將處理後的結果以新數組的形式返回 + 參數:該方法可以接收兩個參數 + 第一個參數是函數,數組中的每個元素都會執行該函數,並且是必須要傳的 + 傳入函數的三個參數 1. currentValue ...
  • JavaScript基礎語法(4) 運算符 運算符用於將一 個或者多個值變成結果值。 使用運算符的值稱為操作數,運算符和操作數的組合稱為表達式 JS中的運算符可以分成下麵幾類: 算術運算符 邏輯運算符 比較運算符 字元串運算符 位操作運算符 賦值運算符 條件運算符 一、算數運算符 算數運算符是最簡單 ...
  • 1、進入項目目錄 2、保證npm和vue已經安裝 npm -v 查看npm是否安裝 vue -V 查看vue是否安裝 3、npm install 安裝依賴 4、npm run dev 【vue是向下相容的,可以導入不高於當前vue版本的項目】 ...
  • vue地址欄#長這樣 地址欄中,經常出現#,是什麼作用,能不能去掉? 地址欄有兩種模式: hash模式:地址欄包含#,#之後的不被獲取 history模式:具有對url歷史進行修改的功能 在微信支付,分享url作為參數傳遞時,url不能滿足需求,因此在實際項目中,一般是修改為history模式 hi ...
  • 把導航作為子路由,加到根路徑上 核心代碼: 別忘了在首頁加上router-view ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...