当前位置:首页 > VUE

vue实现router案例

2026-02-20 00:41:09VUE

以下是一个基于 Vue Router 的完整实现案例,涵盖路由配置、动态路由、导航守卫等核心功能:

安装 Vue Router

通过 npm 或 yarn 安装 Vue Router 依赖:

npm install vue-router@4

基础路由配置

src/router/index.js 中创建路由实例:

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const routes = [
  {
    path: '/',
    name: 'home',
    component: HomeView
  },
  {
    path: '/about',
    name: 'about',
    component: () => import('../views/AboutView.vue')
  }
]

const router = createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes
})

export default router

动态路由匹配

通过冒号 : 定义动态参数:

{
  path: '/user/:id',
  component: () => import('../views/UserView.vue')
}

在组件中通过 useRoute() 获取参数:

import { useRoute } from 'vue-router'

const route = useRoute()
console.log(route.params.id)

路由导航

在模板中使用 <router-link> 进行声明式导航:

<router-link to="/">Home</router-link>
<router-link :to="{ name: 'about' }">About</router-link>

通过编程式导航跳转:

vue实现router案例

import { useRouter } from 'vue-router'

const router = useRouter()
router.push('/about')

嵌套路由

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

{
  path: '/dashboard',
  component: DashboardLayout,
  children: [
    {
      path: '',
      component: DashboardHome
    },
    {
      path: 'settings',
      component: DashboardSettings
    }
  ]
}

父级组件中需要包含 <router-view> 占位符。

导航守卫

全局前置守卫示例:

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

路由独享守卫:

vue实现router案例

{
  path: '/admin',
  component: AdminView,
  beforeEnter: (to, from, next) => {
    // 校验逻辑
  }
}

路由元信息

定义路由时添加 meta 字段:

{
  path: '/profile',
  component: ProfileView,
  meta: { requiresAuth: true }
}

懒加载路由

使用动态 import 实现组件懒加载:

component: () => import('../views/LazyView.vue')

路由过渡动画

<router-view> 外包裹 <transition>

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

滚动行为控制

创建路由时配置 scrollBehavior:

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

该实现案例覆盖了 Vue Router 的主要功能点,可根据实际项目需求进行组合和扩展。注意 Vue 3 需要使用 Vue Router 4.x 版本,与 Vue 2 的 Vue Router 3.x 在 API 上有部分差异。

标签: 案例vue
分享给朋友:

相关文章

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

vue实现route

vue实现route

Vue 路由实现方法 Vue 中实现路由通常使用 vue-router 库,这是 Vue 官方推荐的路由管理器。以下是具体实现步骤: 安装 vue-router 通过 npm 或 yarn 安装…

vue实现颜色

vue实现颜色

Vue 实现颜色的方法 在 Vue 中实现颜色管理可以通过多种方式,以下是一些常见的方法: 使用 CSS 变量动态绑定颜色 在 Vue 组件的样式中定义 CSS 变量,并通过 Vue 的数据绑定动态…

vue课程实现

vue课程实现

Vue 课程实现方案 课程内容设计 Vue课程应从基础到高级逐步展开,涵盖Vue核心概念、组件化开发、状态管理、路由、构建工具等。基础部分包括Vue实例、模板语法、计算属性和侦听器。中级部分深入组件通…

vue实现看板

vue实现看板

Vue 实现看板功能 使用 Vue 实现看板功能可以通过组件化开发、状态管理和拖拽库结合完成。以下是一个完整的实现方案: 基础项目结构 src/ ├── components/ │ ├── Ka…

vue 实现弹窗

vue 实现弹窗

Vue 实现弹窗的方法 在 Vue 中实现弹窗功能可以通过多种方式完成,以下是几种常见的方法: 使用组件和 v-if/v-show 控制显示 创建一个独立的弹窗组件,通过 v-if 或 v-show…