当前位置: 首页 > news >正文

vue3学习日记(十六):路由配置详解

路由配置基础

Vue Router 是 Vue.js 官方的路由管理器,与 Vue.js 核心深度集成。在 Vue3 中,路由配置基本延续了 Vue2 的架构,但进行了 Composition API 的适配。


安装依赖:

npm install vue-router@4

基础路由配置:

import { createRouter, createWebHistory } from 'vue-router';const routes = [{ path: '/', component: Home },{ path: '/about', component: About },
];const router = createRouter({history: createWebHistory(),routes,
});export default router;


动态路由匹配

通过 :param 定义动态路径参数,例如用户详情页:

const routes = [{ path: '/user/:id', component: User },
];

组件中获取参数:

import { useRoute } from 'vue-router';
const route = useRoute();
console.log(route.params.id); // 输出动态参数


嵌套路由配置

嵌套路由适合有公共布局的页面结构,如后台管理系统中的侧边栏布局。

const routes = [{path: '/admin',component: AdminLayout,children: [{ path: 'dashboard', component: Dashboard },{ path: 'settings', component: Settings },],},
];


路由导航守卫

导航守卫主要用来控制路由的访问权限和执行路由切换时的逻辑。

全局前置守卫示例:

router.beforeEach((to, from, next) => {const isAuthenticated = checkAuth()if (to.meta.requiresAuth && !isAuthenticated) {next('/login')} else {next()}
})

路由独享守卫:

const routes = [{path: '/profile',component: Profile,beforeEnter: () => checkPermission(),},
];


 路由懒加载

路由懒加载可以显著提高应用初始加载速度,通过动态 import 实现代码分割。

const routes = [{ path: '/help', component: () => import('./Help.vue') },
];


路由元信息

路由元信息 meta 字段可以用来存储路由相关的额外信息,如页面标题、权限要求等。

{path: '/admin',component: AdminPanel,meta: { requiresAuth: true }
}

访问元信息:

router.beforeEach((to, from, next) => {const requiresAuth = to.matched.some(record => record.meta.requiresAuth)// 处理逻辑
})


编程式导航

常用导航方法:

import { useRouter } from 'vue-router'const router = useRouter()// 跳转路径
router.push('/home')// 带参数跳转
router.push({ name: 'user', params: { id: '123' } })// 替换当前路由
router.replace('/login')// 前进/后退
router.go(1)
router.go(-1)


滚动行为控制

可以自定义路由切换时的滚动位置,提升用户体验。

const router = createRouter({scrollBehavior(to, from, savedPosition) {if (savedPosition) {return savedPosition} else {return { top: 0 }}}
})


路由过渡效果

Vue Router 与 Vue 的过渡系统集成良好,可以为路由切换添加动画效果。

<router-view v-slot="{ Component }"><transition name="fade" mode="out-in"><component :is="Component" /></transition>
</router-view>

对应的 CSS 过渡样式:

.fade-enter-active,
.fade-leave-active {transition: opacity 0.3s ease;
}.fade-enter-from,
.fade-leave-to {opacity: 0;
}


路由模式选择

  • Hash 模式:通过 URL 的 hash 实现(createWebHashHistory),兼容性更好。
  • History 模式:依赖 HTML5 History API(createWebHistory),需服务器配置支持。
history: createWebHistory() // 或 createWebHashHistory()


路由使用场景分析

  • 单页应用核心导航:Vue Router 是构建单页应用不可或缺的部分,管理着应用的所有视图切换。
  • 权限控制场景:通过路由守卫实现基于角色的访问控制,保护敏感路由。
  • 复杂布局管理:嵌套路由可以帮助组织具有复杂布局结构的应用。
  • 动态内容加载:动态路由匹配使得根据参数加载不同内容变得简单。
  • 页面过渡动画:路由过渡效果可以提升应用的用户体验和现代感。


总结与建议

  • 路由模块化:将大型应用的路由配置拆分为多个模块,按功能组织。
  • 合理使用懒加载:对非核心路由使用懒加载,优化初始加载性能。
  • 路由命名规范:为每个路由设置有意义的 name 属性,便于维护和导航。
  • 守卫逻辑复用:将通用的守卫逻辑提取为工具函数,避免代码重复。
  • 路由配置验证:使用 TypeScript 可以为路由配置添加类型安全。
  • 性能监控:对路由切换进行性能分析,确保用户体验流畅。


完整配置示例参考 Vue Router 官方文档。

http://www.dtcms.com/a/390183.html

相关文章:

  • 河南省 ERA5 日值气象数据处理教程(2020–2025)
  • 继承和多态常见面试问题解析
  • 博士生如何进行文献阅读和文献整理?
  • 矩阵分析线性表示例题
  • OpenEuler---jumpserver堡垒机部署
  • STM32 驱动 MAX31865 读取 PT100 温度方案
  • 第四次编程记录
  • 2024年7月 自旋散射效应
  • 理解神经网络中的批量数据处理:维度、矩阵乘法与广播机制
  • UDP传输大数据?真的能兼顾速度和可靠性吗?
  • 某税网登录逆向-sm2-HMacSHA256-sm4-滑块
  • HashMap 添加元素put()的源码和扩容方法resize()的源码解析
  • Windows系统如何查看SSH公钥?
  • 苹果软件代码混淆与多框架应用加固 iOS混淆、ipa文件安全、跨端应用安全防护全流程指南
  • 第一章 神经网络的复习:神经网络的推理
  • MinIO 4 节点集群部署实战:RPM 安装 + mc 工具攻略(网站托管、自动备份)
  • 支持向量机 SVM 预测人脸数据集时数据是否标准化的对比差异
  • 学习笔记:Vue 透传
  • 【记录59】携带token加载图片、图片过大自行压缩、转base64、
  • CentOS 7下FTP配置全攻略
  • 利用Debezium和PostgreSQL逻辑复制实现实时数据同步架构设计与优化实践
  • Part05 数学与其他
  • 链接脚本总结
  • 模电基础:基本放大电路及其优化
  • Curl、Wget 等命令 Uses proxy env variable https_proxy 如何解决
  • 自注意力机制Self-Attention (一)
  • (论文速读)DeNVeR(可变形神经血管表示)-X射线血管造影视频的无监督血管分割
  • css实现3D变化之两面翻转的盒子效果
  • 多项式回归原理与实战:从线性扩展到非线性建模
  • 【层面二】.NET 运行时与内存管理-01(CLR/内存管理)