Vue3实战学习配置使用vue router路由步骤示例

Roselani ·
更新时间:2024-09-20
· 1353 次阅读

目录

引言

一、目录结构

二、版本依赖

三、配置路由

四、使用路由

引言

随着Vue版本的升级,Vue 2.x项目和Vue 3.x项目在使用vue-router上有些区别,本文就简单介绍下vue-router在Vue3中的配置和使用。

一、目录结构 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 二、版本依赖

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: '首页', }, }, { path: '/list', name: 'list', component: defineAsyncComponent(() => import(`../views/list.vue`)), meta: { title: '列表页', }, }, { path: '/*', redirect: '/', }, ] }) // 全局路由守卫 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

说明:

路由模式:

history模式对应createWebHistory()方法

hash模式对应createWebHashHistory()方法

路由懒加载:在vite+Vue3项目中使用import()会有报错,所以使用vue提供的一个方法defineAsyncComponent,详见另一篇:vue3 + vite实现异步组件和路由懒加载

3-2.在src/main.js入口文件中注册使用路由

// 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中使用没有差别。如下:

<template> <div></div> </template> <script> export default { data() { return {} }, mounted() { // 路由跳转 && 设置参数 this.$router.push({ path: '/list', query: { id: 123, }, }) // 获取参数 let { id } = this.$route.query }, } </script>

4-2.在Composition API中不能再直接访问 this.$router 或 this.$route,所以要使用 useRouter 和 useRoute 函数。

<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() // 路由跳转 && 设置参数 router.push({ path: '/list', query: { id: 123, }, }) // 获取参数 let { id } = route.query // 局部路由守卫 onBeforeRouteLeave((to, from) => { const answer = window.confirm( '是否要离开本页面?' ) // 取消导航并停留在同一页面上 if (!answer) return false }) const userData = ref() onBeforeRouteUpdate(async (to, from) => { //仅当 id 更改时才获取用户,例如仅 query 或 hash 值已更改 if (to.params.id !== from.params.id) { userData.value = await ajax(to.params.id) } }) }, } </script>

以上就是Vue3实战学习配置使用vue router路由步骤示例的详细内容,更多关于Vue3配置vue router路由的资料请关注软件开发网其它相关文章!



VUE 实战 示例 学习

需要 登录 后方可回复, 如果你还没有账号请 注册新账号