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

vue router详解和用法

以下是 Vue Router 的详解及核心用法,综合官方文档和最佳实践整理而成:


一、基础配置与概念

  1. 路由定义

    • 通过数组定义路由映射规则,每个路由包含 path(路径)和 component(对应组件)。
    • 示例:
       

      javascriptCopy Code

      const routes = [ { path: '/', component: Home }, { path: '/about', component: About } ]

  2. 路由实例化

    • 创建路由器实例并注入 Vue 应用:
       

      javascriptCopy Code

      import { createRouter, createWebHistory } from 'vue-router' const router = createRouter({ history: createWebHistory(), routes }) app.use(router)

      createWebHistory 启用 History 模式(需服务器支持),createWebHashHistory 启用 Hash 模式。

二、路由导航与渲染

  1. 导航组件

    • <router-link>:替代 <a> 标签实现无刷新跳转,通过 to 属性指定目标路径48。
       

      vueCopy Code

      <router-link to="/about">关于</router-link>

    • <router-view>:作为占位符渲染匹配的组件。
  2. 编程式导航

    • 通过 this.$router.push() 或 router.push() 跳转路由:
       

      javascriptCopy Code

      // 路径字符串 this.$router.push('/user') // 对象形式 this.$router.push({ path: '/user', query: { id: 1 } })

      支持 replace()(无历史记录)、go()(前进/后退)等方法。

三、动态路由与传参

  1. 动态路径参数

    • 使用冒号 : 定义动态段:
       

      javascriptCopy Code

      { path: '/user/:id', component: User }

      组件内通过 $route.params.id 获取参数。
  2. 查询参数与状态

    • URL 查询参数(?key=value):通过 $route.query 获取。
    • 状态传参(不显示在 URL):
       

      javascriptCopy Code

      this.$router.push({ path: '/user', state: { data } })

      目标组件通过 history.state 访问‌‌。

四、进阶功能

  1. 路由守卫

    • 全局守卫‌:控制整体导航流程(如登录验证):
       

      javascriptCopy Code

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

    • 路由独享守卫‌:在路由配置中定义 beforeEnter
    • 组件内守卫‌:beforeRouteEnterbeforeRouteUpdate 等。
  2. 路由懒加载

    • 动态导入组件提升首屏性能:
       

      javascriptCopy Code

      { path: '/admin', component: () => import('./Admin.vue') }

      ‌‌
  3. 嵌套路由

    • 通过 children 属性实现布局嵌套:
       

      javascriptCopy Code

      { path: '/dashboard', component: Dashboard, children: [ { path: 'profile', component: Profile } // 渲染在 Dashboard 的 <router-view> 中 ] }

      ‌‌
  4. 缓存与过渡动画

    • 配合 <keep-alive> 缓存组件状态:
       

      vueCopy Code

      <keep-alive> <router-view /> </keep-alive>

    • 结合 <transition> 添加路由切换动画。

五、常见问题处理

  • 刷新白屏‌:确保 History 模式服务器配置正确(重定向到 index.html)。
  • 动态添加路由‌:通过 router.addRoute() 动态注册路由。
  • 捕获未匹配路由‌:定义通配符路由 path: '/:pathMatch(.*)*' 跳转 404 页
http://www.lqws.cn/news/83161.html

相关文章:

  • 数学建模期末速成 多目标规划
  • B1039 PAT乙级JAVA题解 到底买不买
  • 自定义序列生成器之单体架构实现
  • 截图工具 Snipaste V2.10.7(2025.06.2更新)
  • day 43
  • 【操作系统·windows快捷键指令】
  • STM32:CAN总线精髓:特性、电路、帧格式与波形分析详解
  • 在考古方向遥遥领先的高校课程建设-250602
  • Python Day40 学习(复习学习日志Day5-7)
  • 《QDebug 2025年5月》
  • 简单工厂模式
  • [蓝桥杯]交换次数
  • 强化学习-深度学习和强化学习领域
  • NLP学习路线图(十八):Word2Vec (CBOW Skip-gram)
  • 移动AI神器GPT Mobile:多模型自由切换
  • 三种经典算法优化无线传感器网络(WSN)覆盖(SSA-WSN、PSO-WSN、GWO-WSN),MATLAB代码实现
  • 【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)
  • 【Linux系列】Gunicorn 进程架构解析:主进程与工作进程
  • CTF:网络安全的实战演练场
  • 调整数据集的方法
  • Playwright Python API 测试:从入门到实践
  • IBM 与嘉士伯(Carlsberg)携手推进 SAP S/4HANA 数字化转型,打造啤酒行业新范式
  • 【机器学习】支持向量机(SVM)
  • Spring Cloud 2025 正式发布啦
  • 数据库管理-第332期 大数据已死,那什么当立?(20250602)
  • c++继承
  • 使用pdm+uv替换poetry
  • 任务26:绘制1-12月各省份平均气温和预测可视化图形(折线
  • Java生态中的NLP框架
  • MySQL 全量 增量备份与恢复