Vue-router(v4.x)

1、路由视图

在Vue中,<router-view>是用于展示路由匹配组件的地方。它会根据当前的路由路径,渲染对应的组件。

vue 复制代码
<template>
  <div>
    <nav>
      <router-link to="/">Home</router-link>
      <router-link to="/about">About</router-link>
    </nav>

    <router-view></router-view> <!-- 渲染匹配到的组件 -->
  </div>
</template>

2、路由链接(router-link)

<router-link> 是 Vue Router 提供的导航链接组件。它可以生成一个 <a> 标签,但会阻止默认的页面刷新行为,使用 Vue Router 的方式进行页面切换。

vue 复制代码
<router-link to="/about">Go to About</router-link>

你也可以使用 router-link 来传递动态参数或查询参数:

vue 复制代码
<router-link :to="{ name: 'home', query: { user: 'john' } }">Go to Home</router-link>

3、编辑式导航

你可以使用 Vue Router 提供的 API 在 JavaScript 中进行编程式导航。通常使用 router.push()router.replace() 来进行跳转。

vue 复制代码
// 使用 push 方法跳转
this.$router.push('/about');

// 使用 replace 方法替换当前的路由(不添加历史记录)
this.$router.replace('/about');

// 带参数的跳转
this.$router.push({ name: 'about', query: { id: 123 } });

4、动态路由配置

动态路由允许你根据 URL 中的参数来动态加载不同的组件。例如,展示某个用户的详细信息,可以使用动态参数。

js 复制代码
const routes = [
  {
    path: '/user/:id',  // :id 为动态参数
    component: UserDetails,
  },
];

在组件中,可以通过 $route 获取当前路由的参数:

js 复制代码
<template>
  <div>
    <h1>User ID: {{ userId }}</h1>
  </div>
</template>

<script>
export default {
  computed: {
    userId() {
      return this.$route.params.id;  // 获取路由参数
    }
  }
};
</script>

5、路由守卫

路由守卫可以用来拦截路由的跳转,执行一些逻辑(如验证权限、加载数据等)。

全局守卫

  • beforeEach:在每次路由切换之前执行。
  • afterEach:每次路由切换之后执行。
js 复制代码
router.beforeEach((to, from, next) => {
  // 逻辑判断,如果符合条件则调用 next()
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login');  // 如果没有认证,跳转到登录页面
  } else {
    next();  // 继续执行路由跳转
  }
});

router.afterEach((to, from) => {
  // 路由切换后执行的逻辑
  console.log(`Navigated from ${from.fullPath} to ${to.fullPath}`);
});

路由独享守卫

在特定路由上使用守卫来进行权限控制等操作:

js 复制代码
const routes = [
  {
    path: '/profile',
    component: Profile,
    beforeEnter: (to, from, next) => {
      if (!isAuthenticated) {
        next('/login');
      } else {
        next();
      }
    }
  }
];

6、路由重定向与别名

路由重定向

可以使用 redirect 来进行路由重定向,指向其他路由。

js 复制代码
const routes = [
  {
    path: '/old-home',
    redirect: '/new-home'
  }
];

路由别名

路由别名允许你为现有路由定义额外的路径。

js 复制代码
const routes = [
  {
    path: '/home',
    component: Home,
    alias: '/start'  // 通过 /start 也会渲染 Home 组件
  }
];
相关推荐
weixin_382395239 小时前
为小工厂量身打造:本地部署的物料管理系统带缺料计算
前端·制造
__zRainy__9 小时前
解决pnpm v10+不自动构建
前端·pnpm·工程化
猫猫不是喵喵.9 小时前
Vue3 Props 属性
前端·javascript·vue.js
醉城夜风~10 小时前
CSS元素显示模式(display)
前端·css
AI大模型-小华11 小时前
Codex 三方充值快速入门指南
java·前端·数据库·chatgpt·ai编程·codex·chatgpt pro
做前端的娜娜子13 小时前
同一链接实现 PC Web 与移动 H5 自适应
前端·掘金·金石计划
小帅不太帅14 小时前
架构没变、规模没变,DeepSeek V4 Flash 正式版凭什么暴涨 47 分?
前端·aigc·deepseek
jarvisuni14 小时前
DeepSeekFlash前端依旧拉垮,而且变慢了很多!
前端·javascript·算法
卷福同学15 小时前
AI编程出海第二步:验证关键词能否做站
前端·人工智能·后端