Vue3中vue-router的使用方法詳解
1 介紹
Vue 很適合用來構(gòu)建單頁面應(yīng)用。對于大多數(shù)此類應(yīng)用,都推薦使用官方支持的Vue Router;在單頁面應(yīng)用(Single-page application)中,客戶端的 JavaScript 可以攔截頁面的跳轉(zhuǎn)請求,動態(tài)獲取新的數(shù)據(jù),然后在無需重新加載的情況下更新當前頁面。這樣通??梢詭砀樆挠脩趔w驗,因為這類場景下用戶通常會在很長的一段時間中做出多次交互。這類的單頁面應(yīng)用中,路由的更新是在客戶端執(zhí)行的。
Vue Router 是 Vue 的官方路由。它與 Vue.js 核心深度集成,讓用 Vue.js 構(gòu)建單頁應(yīng)用變得輕而易舉。功能包括:
- 嵌套路由映射
- 動態(tài)路由選擇
- 模塊化、基于組件的路由配置
- 路由參數(shù)、查詢、通配符
- 展示由 Vue.js 的過渡系統(tǒng)提供的過渡效果
- 細致的導(dǎo)航控制
- 自動激活 CSS 類的鏈接
- HTML5 history 模式或 hash 模式
- 可定制的滾動行為
- URL 的正確編碼
以下我們來介紹Vue Router的基本使用。
2 Vue Router的使用
2.1 安裝
對于vue3,我們推薦使用vue-router 4.x及以上版本。node環(huán)境安裝如下:
npm install vue-router@4
2.2 引入
在我們工程項目中,路由文件通常需要單獨管理,以便于后續(xù)的使用以及維護。再此基礎(chǔ)下,我們引入分為兩步:
- 創(chuàng)建統(tǒng)一管理路由入口文件
- vue項目引入使用路由入口文件
2.2.1 創(chuàng)建路由文件
在與main.ts文件的同級目錄下創(chuàng)建router文件夾,并添加index.ts文件(使用ts,若使用js也同理)。
文件內(nèi)容如下:
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import Home from "../views/Home.vue";
// 項目其他頁面路由(推薦使用)
import Practice from "../router/practiceFolder/practice";
// vue項目自帶路由
const routes: Array<RouteRecordRaw> = [
{
path: "/",
name: "Home",
component: Home
},
{
path: "/about",
name: "About",
component: () =>
import(/* webpackChunkName: "about" */ "../views/About.vue")
}
];
const routers = [...routes, ...Practice];
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes: [...routes, ...Practice]
});
export default router;其中,使用RouteRecordRaw聲明的對象會被當做路由對象,放入到路由對象池里。
createRouter創(chuàng)建路由;
createWebHistory代表路由使用 HTML5 模式,也是推薦使用的模式;
2.2.2 main.ts 引入
代碼如下:
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
createApp(App)
.use(store)
.use(router)
.mount("#app");2.3 使用
2.3.1 router-view使用
入之后我們單頁面應(yīng)用可以在app.vue配置使用router-view來切換頁面,代碼如下:
<template>
<router-view v-slot="{ Component }">
</router-view>
</template>引入之后,在 Vue 實例中,你可以通過 $router 訪問路由實例,若想要導(dǎo)航到不同的 URL,使用this.$router.push(...)進行跳轉(zhuǎn)
詳細的router-view使用方法可見vue router-view使用詳解
2.3.2 router-link使用
當使用 <router-link> 時,內(nèi)部會調(diào)用router.push(...)這個方法,所以點擊 <router-link :to="..."> 相當于調(diào)用 router.push(...)
2.3.3 在 setup 中訪問路由和當前路由
因為我們在 setup 里面沒有訪問 this,所以我們不能再直接訪問 this.$router 或 this.$route。作為替代,我們使用 useRouter 和 useRoute 函數(shù):
import { useRouter, useRoute } from 'vue-router'
export default {
setup() {
const router = useRouter()
const route = useRoute()
function pushWithQuery(query) {
router.push({
name: 'about',
query: {
...route.query,
},
})
}
},
}2.4 其他API
除以上介紹的Vue Router基本API,還有如下API可供使用:
- NavigationFailureType: 導(dǎo)航失敗類型
- START_LOCATION: 默認開始位置
- createMemoryHistory: 使用記憶歷史模式
- createRouterMatcher:
- createWebHashHistory: 創(chuàng)建哈希模式
- createWebHistory: 創(chuàng)建html5模式
- isNavigationFailure: 導(dǎo)航是否失敗
- onBeforeRouteLeave: 導(dǎo)航守衛(wèi),setup中使用,在當前位置的組件將要離開時觸發(fā)。
- onBeforeRouteUpdate: 導(dǎo)航守衛(wèi),setup中使用,在當前位置即將更新時觸發(fā)。
- parseQuery: 解析query參數(shù)
- stringifyQuery: 字符串query參數(shù)
- useLink: 將RouterLink 的內(nèi)部行為作為一個組合式 API 函數(shù)公開。
- useRoute: 替代this.$route
- useRouter: 替代this.$router
本文參考官網(wǎng),進行vue3路由配置實際操作,更加全面的使用請參考官網(wǎng)vue router。
到此這篇關(guān)于Vue3中vue-router的使用方法詳解的文章就介紹到這了,更多相關(guān)Vue3 vue-router內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
vue.config.js中devServer.proxy配置說明及配置正確不生效問題解決
Vue報錯Module build failed: Error: Node&nb
vscode使用Eslint+Prettier格式化代碼的詳細操作
vue大屏自適應(yīng)的實現(xiàn)方法(cv就能用)

