当前位置:首页 > 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>

通过编程式导航跳转:

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()
  }
})

路由独享守卫:

{
  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:

vue实现router案例

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实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现图库

vue实现图库

Vue 实现图库的基本方法 使用 Vue 实现图库功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用 Vue 和第三方库(如 Vue Gallery) 安装 vue-gallery 或…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue实现Siri

vue实现Siri

Vue 实现 Siri 风格语音交互 实现类似 Siri 的语音交互功能需要结合语音识别、语音合成和前端交互逻辑。Vue 作为前端框架,可以很好地管理这些功能的交互状态。 语音识别集成 使用 Web…

vue ref实现

vue ref实现

Vue 中 ref 的实现 在 Vue 中,ref 是一个用于创建响应式引用的 API,适用于基本类型和对象。以下是 ref 的核心实现原理和使用方法。 基本实现原理 ref 通过 Reactive…