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

第14篇:Vue Router 高级用法与路由守卫

目标:掌握路由模式、导航守卫、懒加载等进阶功能


1. 路由模式:Hash vs History

Vue Router 支持两种模式:

  • Hash 模式:通过 URL 的哈希部分(如 http://example.com/#/home)实现路由,兼容性好,无需服务器配置11。

  • History 模式:基于 HTML5 History API(如 http://example.com/home),URL 更简洁,但需服务器支持重定向11。

配置方式

const router = createRouter({  
  history: createWebHashHistory(), // Hash 模式  
  // history: createWebHistory(),   // History 模式  
  routes  
})  

2. 路由元信息(Meta Fields)

通过 meta 字段为路由添加自定义信息(如页面权限、标题):

{  
  path: '/admin',  
  component: AdminPage,  
  meta: {  
    requiresAuth: true,  
    title: '管理后台'  
  }  
}  

使用场景

  • 在导航守卫中校验权限

  • 动态修改页面标题


3. 路由懒加载

优化首屏加载速度,按需加载组件:

const routes = [  
  {  
    path: '/profile',  
    component: () => import('./views/Profile.vue') // 动态导入  
  }  
]  
原理:利用 Webpack 的代码分割功能,将组件拆分为独立 chunk。

4. 导航守卫进阶

全局前置守卫

router.beforeEach((to, from, next) => {  
  if (to.meta.requiresAuth && !isLoggedIn()) {  
    next('/login') // 跳转登录页  
  } else {  
    next() // 放行  
  }  
})  
路由独享守卫
{  
  path: '/dashboard',  
  component: Dashboard,  
  beforeEnter: (to, from) => {  
    // 仅对该路由生效  
  }  
}  
组件内守卫
<script setup>  
import { onBeforeRouteLeave } from 'vue-router'  

onBeforeRouteLeave(() => {  
  return confirm('未保存的更改将丢失,确定离开?')  
})  
</script>  

5. 动态路由与参数传递

动态路径参数

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

获取参数

<script setup>  
import { useRoute } from 'vue-router'  
const route = useRoute()  
console.log(route.params.userId)  
</script>  

查询参数

router.push({ path: '/search', query: { keyword: 'vue' } })  
// 获取:route.query.keyword  

6. 路由嵌套与命名视图

嵌套路由

{  
  path: '/settings',  
  component: SettingsLayout,  
  children: [  
    { path: 'profile', component: Profile },  
    { path: 'security', component: Security }  
  ]  
}  

命名视图(多组件布局):

<router-view name="sidebar"></router-view>  
<router-view></router-view>  
{  
  path: '/',  
  components: {  
    default: Home,  
    sidebar: Sidebar  
  }  
}  

实战建议

  1. 权限控制:结合 meta 字段和全局守卫实现路由权限1114。

  2. 错误处理:配置 404 页面捕获未匹配路由14:

{ path: '/:pathMatch(.*)*', component: NotFound }  
 
  1. 性能优化:对非核心路由使用懒加载,减少首屏体积11。

相关文章:

  • 2025教育与科研领域实战全解析:DeepSeek赋能细分场景深度指南(附全流程案例与资源)
  • Android 实现 RTMP 推流:快速集成指南
  • PyTorch 是如何进行机器学习的
  • stm32108键C-B全调性_动态可视化乐谱钢琴
  • conda 基本命令
  • HttpWatch 9.4.17 Pro网页调试与性能优化 资源工具分享
  • Leetcode-42. Trapping Rain Water [C++][Java]
  • 能否在delete一个指针后继续使用它以及原因
  • MQTT实现智能家居------3、源码分析(超详细)
  • JavaScript中的call方法相关知识点
  • ZLG嵌入式笔记 | 为什么你的网卡工作会不正常?(上
  • 鸿蒙学习-
  • ctf网络安全题库 ctf网络安全大赛答案
  • JSP学习
  • MybatisPlus-注解
  • 【Python基础】Python 环境安装 Win10
  • 爬虫第九篇-结束爬虫循环
  • 【论文解读】《Training Large Language Models to Reason in a Continuous Latent Space》
  • STL容器终极解剖:C++ vector源码级实现指南 | 从内存分配到异常安全的全流程避坑
  • 【Git】远程操作
  • 无限流量网站建设/google chrome官网
  • 乐清网站建设/安徽网站seo
  • 网站建设和推广话术/网站维护一年一般多少钱?
  • 手机网站怎么设置成电脑版的/seo文章优化方法
  • 网站设计公司网站专业/最近新闻今日头条
  • 网站建设中扁平化结构/国际新闻最新消息十条摘抄