当前位置:首页 > VUE

vue实现导航图

2026-01-17 00:36:04VUE

Vue 实现导航图的方法

使用 Vue Router 实现基本导航

安装 Vue Router 依赖:

npm install vue-router

在项目中配置路由:

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

在主文件中引入并使用路由:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

const app = createApp(App)
app.use(router)
app.mount('#app')

在模板中使用导航链接

使用 <router-link> 组件创建导航:

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link>
      <router-link to="/about">About</router-link>
    </nav>
    <router-view/>
  </div>
</template>

动态路由匹配

配置带参数的路由:

const routes = [
  { path: '/user/:id', component: User }
]

在组件中访问路由参数:

import { useRoute } from 'vue-router'

export default {
  setup() {
    const route = useRoute()
    return {
      userId: computed(() => route.params.id)
    }
  }
}

嵌套路由

定义嵌套路由配置:

const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      { path: 'profile', component: UserProfile },
      { path: 'posts', component: UserPosts }
    ]
  }
]

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

<template>
  <div class="user">
    <h2>User {{ $route.params.id }}</h2>
    <router-view/>
  </div>
</template>

编程式导航

在组件方法中进行导航跳转:

import { useRouter } from 'vue-router'

export default {
  setup() {
    const router = useRouter()

    const navigate = () => {
      router.push('/about')
      // 或 router.push({ path: '/about' })
    }

    return { navigate }
  }
}

导航守卫

添加全局前置守卫:

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

添加路由独享守卫:

const routes = [
  {
    path: '/admin',
    component: Admin,
    beforeEnter: (to, from, next) => {
      // 验证逻辑
    }
  }
]

路由元信息

定义路由元字段:

const routes = [
  {
    path: '/profile',
    component: Profile,
    meta: { requiresAuth: true }
  }
]

过渡动效

为路由视图添加过渡效果:

vue实现导航图

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

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

标签: vue
分享给朋友:

相关文章

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue实现mouseout

vue实现mouseout

Vue 实现 mouseout 事件的方法 在 Vue 中实现 mouseout 事件可以通过多种方式完成,以下是几种常见的方法: 使用 v-on 指令 Vue 提供了 v-on 指令(或简写为 @…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…