当前位置:首页 > VUE

vue路由实现切换

2026-01-17 21:58:08VUE

Vue 路由切换的实现方法

Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)中的页面切换。以下是常见的路由切换方式:

声明式导航

使用 <router-link> 组件实现路由切换,通过 to 属性指定目标路由路径:

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

可以通过 tag 属性指定渲染的标签类型:

<router-link to="/profile" tag="button">Profile</router-link>

编程式导航

在 Vue 组件中通过 this.$router 提供的 API 实现路由跳转:

// 跳转到指定路径
this.$router.push('/home')

// 带参数跳转
this.$router.push({ path: '/user', query: { id: '123' } })

// 命名路由跳转
this.$router.push({ name: 'user', params: { userId: '123' } })

// 替换当前路由(不添加历史记录)
this.$router.replace('/login')

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

路由传参

可以通过以下方式传递参数:

vue路由实现切换

  1. 动态路由匹配

    // 路由配置
    {
      path: '/user/:id',
      component: User
    }
    
    // 组件中获取
    this.$route.params.id
  2. 查询参数

    // 跳转时
    this.$router.push({ path: '/search', query: { keyword: 'vue' } })
    
    // 组件中获取
    this.$route.query.keyword
  3. 命名路由传参

    vue路由实现切换

    // 路由配置
    {
      name: 'profile',
      path: '/profile/:userId',
      component: Profile
    }
    
    // 跳转时
    this.$router.push({ name: 'profile', params: { userId: 123 } })

导航守卫

可以在路由切换前后执行逻辑:

// 全局前置守卫
router.beforeEach((to, from, next) => {
  // 必须调用 next()
  next()
})

// 路由独享守卫
{
  path: '/admin',
  component: Admin,
  beforeEnter: (to, from, next) => {
    // 验证逻辑
    next()
  }
}

// 组件内守卫
export default {
  beforeRouteEnter(to, from, next) {
    // 不能访问组件实例
    next(vm => {
      // 通过 vm 访问组件实例
    })
  },
  beforeRouteUpdate(to, from, next) {
    // 当前路由改变但组件被复用时调用
    next()
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开时调用
    next()
  }
}

路由过渡效果

可以通过 <transition> 组件为路由切换添加动画:

<transition name="fade">
  <router-view></router-view>
</transition>

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

路由懒加载

通过动态导入实现路由组件懒加载:

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

const router = new VueRouter({
  routes: [
    { path: '/user', component: User }
  ]
})

标签: 路由vue
分享给朋友:

相关文章

vue实现适老化样式

vue实现适老化样式

Vue 实现适老化样式的关键方法 全局字体与字号调整 通过 CSS 变量或主题配置统一放大基础字号,建议正文不小于 18px,标题更大。在 App.vue 中设置全局样式: :root { -…

vue实现页面截屏

vue实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

vue无限菜单怎么实现

vue无限菜单怎么实现

实现 Vue 无限菜单的方法 递归组件实现嵌套菜单 使用 Vue 的递归组件特性可以轻松实现无限级嵌套菜单。通过组件调用自身的方式处理嵌套数据。 <template> <ul&…

vue实现用户信息删除

vue实现用户信息删除

Vue 实现用户信息删除功能 在 Vue 中实现用户信息删除功能通常涉及前端界面交互和后端 API 调用。以下是实现步骤: 前端界面设计 创建删除按钮或操作项,通常使用 @click 事件触发删除…

vue实现右下角弹框

vue实现右下角弹框

实现右下角弹框的基本思路 在Vue中实现右下角弹框,通常需要结合CSS定位和Vue的组件化特性。弹框可以通过绝对定位固定在右下角,并通过Vue控制其显示与隐藏。 创建弹框组件 新建一个Vue组件(…

vue实现边框

vue实现边框

Vue 实现边框的方法 在 Vue 中实现边框效果可以通过多种方式完成,包括内联样式、CSS 类绑定、动态样式以及使用第三方 UI 库。以下是几种常见的实现方法。 内联样式绑定 使用 Vue 的 :…