当前位置:首页 > VUE

vue导航的实现

2026-01-17 23:46:49VUE

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

在 main.js 中注册路由:

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

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

在模板中使用路由:

<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>

动态路由配置

定义带参数的路由:

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

在组件中访问路由参数:

export default {
  props: ['id'],
  setup(props) {
    console.log(props.id)
  }
}

导航守卫

全局前置守卫:

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

路由独享守卫:

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

组件内守卫:

export default {
  beforeRouteEnter(to, from, next) {
    // 组件渲染前调用
  },
  beforeRouteUpdate(to, from, next) {
    // 当前路由改变但组件复用时调用
  },
  beforeRouteLeave(to, from, next) {
    // 离开该组件对应路由时调用
  }
}

路由元信息

定义路由元字段:

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

编程式导航

在组件中导航:

// 字符串路径
router.push('/users/1')

// 带查询参数
router.push({ path: '/users', query: { page: 1 } })

// 命名路由
router.push({ name: 'user', params: { id: '123' } })

// 替换当前路由
router.replace({ path: '/about' })

// 前进/后退
router.go(1)
router.go(-1)

嵌套路由

配置嵌套路由:

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

在父组件模板中添加:

<router-view></router-view>

懒加载路由

按需加载路由组件:

const User = () => import('./views/User.vue')

{
  path: '/user',
  component: User
}

滚动行为

自定义滚动行为:

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

路由过渡效果

为路由切换添加过渡动画:

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

配套 CSS:

vue导航的实现

.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.3s ease;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
}

标签: vue
分享给朋友:

相关文章

vue登录逻辑的实现

vue登录逻辑的实现

Vue 登录逻辑实现 前端实现 创建登录组件 在 Vue 项目中创建一个登录组件,通常命名为 Login.vue。该组件包含表单元素,如用户名和密码输入框,以及提交按钮。 <template&…

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现过程

vue实现过程

Vue 的实现过程 Vue 的实现过程可以分为多个核心模块,包括响应式系统、虚拟 DOM、模板编译等。以下是 Vue 的主要实现过程分析。 响应式系统 Vue 的响应式系统基于 Object.def…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue 实现视频

vue 实现视频

Vue 实现视频播放功能 使用 Vue 实现视频播放功能可以通过 HTML5 的 <video> 标签或第三方库(如 video.js)来实现。以下是两种常见的方法: 使用 HTML5…

vue实现radio

vue实现radio

Vue 实现 Radio 按钮 在 Vue 中实现 Radio 按钮可以通过 v-model 进行数据绑定,结合 input 元素的 type="radio" 属性。以下是一个基本示例: <t…