Vue Router 核心知识点

以下是 Vue Router 的核心知识点及示例说明,涵盖路由配置、导航守卫、动态路由、嵌套路由等核心功能:


一、路由配置

1. 基本路由定义

通过 routes 数组定义路径与组件的映射关系。

// router/index.js
import { createRouter, createWebHistory } from 'vue-router';
import Home from '../views/Home.vue';
import About from '../views/About.vue';

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

const router = createRouter({
  history: createWebHistory(),
  routes
});

export default router;
2. 路由模式

支持 hashhistory 模式:

// Hash 模式(URL 带 #)
// createWebHashHistory()

// History 模式(需服务器配置)
createWebHistory();

二、导航守卫

1. 全局前置守卫(beforeEach

用于权限验证或全局拦截:

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem('token');
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login'); // 跳转到登录页
  } else {
    next(); // 放行
  }
});
2. 路由独享守卫(beforeEnter

在路由配置中定义:

const routes = [
  {
    path: '/admin',
    component: Admin,
    beforeEnter: (to, from, next) => {
      // 验证管理员权限
      next();
    }
  }
];
3. 组件内守卫

在组件中使用 onBeforeRouteUpdatebeforeRouteLeave

// Vue 3 组合式 API
import { onBeforeRouteLeave } from 'vue-router';

export default {
  setup() {
    onBeforeRouteLeave((to, from, next) => {
      const answer = window.confirm('确定离开吗?');
      next(answer); // 用户确认后离开
    });
  }
};

三、动态路由匹配

1. 动态参数(:id
// 路由配置
{ path: '/user/:id', component: User }

// 组件中获取参数
// 模板中:{{ $route.params.id }}
// 组合式 API:const { id } = useRoute().params;
2. 参数作为 Props

通过 props: true 将参数传递给组件:

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

// User 组件中接收 props
export default {
  props: ['id']
};

四、嵌套路由

1. 配置子路由

使用 children 属性定义嵌套路由:

const routes = [
  {
    path: '/user',
    component: UserLayout,
    children: [
      { path: '', component: Profile }, // /user
      { path: 'posts', component: Posts } // /user/posts
    ]
  }
];
2. 父组件中渲染子路由

在父组件模板中添加 <router-view>

<!-- UserLayout.vue -->
<template>
  <div>
    <h1>用户页面</h1>
    <router-view></router-view> <!-- 子路由在此渲染 -->
  </div>
</template>

五、命名路由与命名视图

1. 命名路由

通过 name 标识路由,便于编程式导航:

// 路由配置
{ path: '/settings', name: 'Settings', component: Settings }

// 跳转时使用名称
router.push({ name: 'Settings' });
2. 命名视图

同一页面渲染多个视图:

<!-- App.vue -->
<template>
  <router-view name="header"></router-view>
  <router-view></router-view> <!-- 默认视图 -->
  <router-view name="footer"></router-view>
</template>

// 路由配置
{
  path: '/dashboard',
  components: {
    default: Dashboard,
    header: DashboardHeader,
    footer: DashboardFooter
  }
}

六、编程式导航

1. 基本跳转
// 字符串路径
router.push('/about');

// 对象形式
router.push({ path: '/about' });

// 命名路由
router.push({ name: 'About' });

// 替换当前历史记录(无后退)
router.replace('/login');

// 前进/后退
router.go(1); // 前进一步
router.go(-2); // 后退两步
2. 传递参数
// 路径参数
router.push({ name: 'User', params: { id: 123 } });

// 查询参数
router.push({ path: '/user', query: { name: 'Alice' } });

七、路由懒加载

使用动态导入 (import()) 实现按需加载:

const routes = [
  {
    path: '/about',
    component: () => import('../views/About.vue') // 懒加载
  }
];

八、路由元信息

通过 meta 字段存储额外信息(如页面权限):

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

九、错误处理(404页面)

配置通配符路由捕获未匹配路径:

{ path: '/:pathMatch(.*)*', component: NotFound }

十、过渡动效

为路由切换添加动画:

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

<style>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.5s;
}
.fade-enter-from, .fade-leave-to {
  opacity: 0;
}
</style>

总结

核心功能实现方式
路由配置createRouter + routes 数组
导航守卫beforeEachbeforeEnter、组件内守卫
动态路由path: '/user/:id' + $route.paramsprops
嵌套路由children 属性 + 父组件 <router-view>
编程式导航router.pushrouter.replace
路由懒加载component: () => import('...')
路由元信息meta 字段 + 导航守卫校验
过渡动效<transition> 包裹 <router-view>

通过灵活运用这些功能,可以构建复杂且高效的单页面应用(SPA)。

Vue RouterVue.js 官方的路由管理器,它和 Vue.js核心深度集成,让构建单页面应用变得易如反掌。下面是 Vue Router 的所有知识点详细介绍: 1. 路由概念 路由是指根据不同的 URL 地址展示不同的页面或视图,常见的有前端路由和后端路由。前端路由是指通过 JavaScript 解析 URL,根据 URL 的不同参数展示相应的视图,不需要刷新页面;后端路由是指通过服务器解析 URL,根据 URL 的不同参数返回相应的 HTML 页面。 2. Vue Router 安装和使用 安装 Vue Router 可以通过 npm 或 yarn,使用时需要在 main.js 中引入并挂载到 Vue 实例上。使用 Vue Router 可以通过 router-link 和 router-view 两个组件实现。 3. 路由配置 路由配置指的是在 Vue Router定义路由的规则,包括路由路径、组件、名称、参数等。路由配置可以通过对象字面量或函数返回对象的形式定义,也可以通过单独文件的形式定义。 4. 动态路由 动态路由是指根据不同的参数动态生成路由,常见的参数包括 ID、用户名等。在 Vue Router 中,可以通过冒号(:)定义动态路由参数。 5. 嵌套路由 嵌套路由是指在一个路由中再定义子路由,实现多级路由嵌套的效果。在 Vue Router 中,可以通过 children 属性定义子路由。 6. 命名路由 命名路由是指给路由定义名称,方便在代码中调用和跳转。在 Vue Router 中,可以通过 name 属性定义命名路由。 7. 路由参数 路由参数是指通过 URL 传递参数,常见的有查询参数和动态路由参数,可以通过 $route 对象获取当前路由的参数。 8. 路由导航 路由导航指的是在页面中跳转路由,包括通过 router-link 跳转和通过编程式导航跳转。在 Vue Router 中,可以通过 $router 对象和 $route 对象实现路由导航。 9. 导航守卫 导航守卫是指在路由导航过程中执行的钩子函数,包括全局守卫、路由独享守卫和组件内守卫。导航守卫可以实现路由跳转前的验证、权限控制等功能。 10. 路由元信息 路由元信息是指在路由中定义的额外信息,可以通过 meta 属性定义。路由元信息可以实现页面标题、权限控制等功能。 11. 懒加载 懒加载是指在需要时才加载组件,可以提高应用性能。在 Vue Router 中,可以通过异步组件和 import() 函数实现懒加载。 以上就是 Vue Router 的所有知识点详细介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值