Vue3實(shí)戰(zhàn)學(xué)習(xí)配置使用vue?router路由步驟示例
引言
隨著Vue版本的升級(jí),Vue 2.x項(xiàng)目和Vue 3.x項(xiàng)目在使用vue-router上有些區(qū)別,本文就簡(jiǎn)單介紹下vue-router在Vue3中的配置和使用。
一、目錄結(jié)構(gòu)
demo/ package.json vite.config.js index.html public/ src/ api/ assets/ common/ components/ store/ views/ home.vue list.vue router/ index.js App.vue main.js
二、版本依賴(lài)
vite: ^2.0.0
vue: ^3.2.8
vue-router: ^4.0.1
三、配置路由
- 3-1.配置src/router/index.js路由文件
// src/router/index.js import {createRouter, createWebHistory, createWebHashHistory} from 'vue-router' import { defineAsyncComponent } from 'vue' const router = createRouter({ // history: createWebHashHistory(), // hash 模式 history: createWebHistory(), // history 模式 routes: [ { path: '/', name: 'home', component: defineAsyncComponent(() => import(`../views/home.vue`)), meta: { title: '首頁(yè)', }, }, { path: '/list', name: 'list', component: defineAsyncComponent(() => import(`../views/list.vue`)), meta: { title: '列表頁(yè)', }, }, { path: '/*', redirect: '/', }, ] }) // 全局路由守衛(wèi) router.beforeEach((to, from, next)=>{ // console.log(to, from) if (to.meta.title) { document.title = `${to.meta.title}`; } next() }) router.afterEach((to, from)=>{ // console.log(to, from) console.log('afterEach') }) export default router
說(shuō)明:
- 路由模式:
- history模式對(duì)應(yīng)createWebHistory()方法
- hash模式對(duì)應(yīng)createWebHashHistory()方法
- 路由懶加載:在vite+Vue3項(xiàng)目中使用import()會(huì)有報(bào)錯(cuò),所以使用vue提供的一個(gè)方法defineAsyncComponent,詳見(jiàn)另一篇:vue3 + vite實(shí)現(xiàn)異步組件和路由懶加載
- 3-2.在src/main.js入口文件中注冊(cè)使用路由
// src/main.js import { createApp } from 'vue' import router from './router' import store from './store' import App from './App.vue' // ... const app = createApp(App) app.use(router).use(store); app.mount('#app')
- 3-3.在src/App.vue文件中使用<router-view/>
// src/App.vue <template> <router-view/> </template>
四、使用路由
- 4-1.在Option API中使用和Vue 2.x中使用沒(méi)有差別。如下:
<template> <div></div> </template> <script> export default { data() { return {} }, mounted() { // 路由跳轉(zhuǎn) && 設(shè)置參數(shù) this.$router.push({ path: '/list', query: { id: 123, }, }) // 獲取參數(shù) let { id } = this.$route.query }, } </script>
- 4-2.在Composition API中不能再直接訪問(wèn) this.$router 或 this.$route,所以要使用 useRouter 和 useRoute 函數(shù)。
<template> <div></div> </template> <script> import { ref } from 'vue' import { useRouter, useRoute, onBeforeRouteLeave, onBeforeRouteUpdate } from 'vue-router' import ajax from "./ajax"; export default { setup () { const router = useRouter() const route = useRoute() // 路由跳轉(zhuǎn) && 設(shè)置參數(shù) router.push({ path: '/list', query: { id: 123, }, }) // 獲取參數(shù) let { id } = route.query // 局部路由守衛(wèi) onBeforeRouteLeave((to, from) => { const answer = window.confirm( '是否要離開(kāi)本頁(yè)面?' ) // 取消導(dǎo)航并停留在同一頁(yè)面上 if (!answer) return false }) const userData = ref() onBeforeRouteUpdate(async (to, from) => { //僅當(dāng) id 更改時(shí)才獲取用戶(hù),例如僅 query 或 hash 值已更改 if (to.params.id !== from.params.id) { userData.value = await ajax(to.params.id) } }) }, } </script>
以上就是Vue3實(shí)戰(zhàn)學(xué)習(xí)配置使用vue router路由步驟示例的詳細(xì)內(nèi)容,更多關(guān)于Vue3配置vue router路由的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- vue3配置router路由并實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)功能
- Vue3路由配置createRouter、createWebHistory、useRouter和useRoute詳解
- vue-router如何實(shí)現(xiàn)history模式配置
- Vue-Router的routes配置詳解
- Vue Router history模式的配置方法及其原理
- vue-router的使用方法及含參數(shù)的配置方法
- 使用vue-router為每個(gè)路由配置各自的title
- vue router 配置路由的方法
- vue-router+nginx 非根路徑配置方法
- vue中的Router基本配置命令實(shí)例詳解
相關(guān)文章
解決vue axios跨域 Request Method: OPTIONS問(wèn)題(預(yù)檢請(qǐng)求)
這篇文章主要介紹了解決vue axios跨域 Request Method: OPTIONS問(wèn)題(預(yù)檢請(qǐng)求),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08Vue+Element-ui表單resetFields無(wú)法重置問(wèn)題
本文主要介紹了Vue+Element-ui表單resetFields無(wú)法重置問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04vue 判斷兩個(gè)時(shí)間插件結(jié)束時(shí)間必選大于開(kāi)始時(shí)間的代碼
這篇文章主要介紹了vue 判斷兩個(gè)時(shí)間插件結(jié)束時(shí)間必選大于開(kāi)始時(shí)間的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11vite?+?electron-builder?打包配置詳解
這篇文章主要為大家介紹了electron基于vite?+?electron-builder?打包配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09詳解使用vue-cli腳手架初始化Vue項(xiàng)目下的項(xiàng)目結(jié)構(gòu)
這篇文章主要介紹了詳解使用vue-cli腳手架初始化Vue項(xiàng)目下的項(xiàng)目結(jié)構(gòu),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03vue2.0開(kāi)發(fā)入門(mén)筆記之.vue文件的生成和使用
本篇文章主要介紹了vue2.0開(kāi)發(fā)入門(mén)筆記之.vue文件的生成和使用 ,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09vue項(xiàng)目中的數(shù)據(jù)變化被watch監(jiān)聽(tīng)并處理
這篇文章主要介紹了vue項(xiàng)目中的數(shù)據(jù)變化被watch監(jiān)聽(tīng)并處理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04element?表格多級(jí)表頭子列固定的實(shí)現(xiàn)
本文主要介紹了element?表格多級(jí)表頭子列固定的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06vuejs使用遞歸組件實(shí)現(xiàn)樹(shù)形目錄的方法
本篇文章主要介紹了vuejs使用遞歸組件實(shí)現(xiàn)樹(shù)形目錄的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-09-09