当前位置:首页 > VUE

vue 实现跳转

2026-03-07 10:56:36VUE

路由跳转实现

在Vue中实现页面跳转通常使用Vue Router,这是Vue.js官方的路由管理器。它和Vue.js核心深度集成,使构建单页面应用变得易如反掌。

安装Vue Router:

npm install vue-router

配置基本路由:

import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from './views/Home.vue'
import About from './views/About.vue'

Vue.use(VueRouter)

const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About }
]

const router = new VueRouter({
  routes
})

export default router

声明式导航

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

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

可以添加active-class属性自定义激活状态的类名:

<router-link to="/about" active-class="active-link">About</router-link>

编程式导航

通过this.$router.push()方法实现编程式导航:

methods: {
  goToAbout() {
    this.$router.push('/about')
  }
}

带参数的跳转:

this.$router.push({ path: '/user', query: { id: '123' } })
// 或
this.$router.push({ name: 'user', params: { id: '123' } })

命名路由

在路由配置中给路由设置名称:

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

使用命名路由跳转:

this.$router.push({ name: 'user', params: { id: '123' } })

路由传参

通过params传递参数:

this.$router.push({ name: 'user', params: { userId: '123' } })

在目标组件中接收参数:

this.$route.params.userId

通过query传递参数:

this.$router.push({ path: '/user', query: { id: '123' } })

在目标组件中接收query参数:

this.$route.query.id

路由守卫

全局前置守卫:

vue 实现跳转

router.beforeEach((to, from, next) => {
  // 必须调用next()
})

路由独享守卫:

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

组件内守卫:

export default {
  beforeRouteEnter(to, from, next) {
    // 不能访问this
  },
  beforeRouteUpdate(to, from, next) {
    // 当前路由改变但组件被复用时调用
  },
  beforeRouteLeave(to, from, next) {
    // 导航离开该组件时调用
  }
}

动态路由匹配

使用冒号标记动态路径参数:

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

在组件中访问参数:

this.$route.params.id

响应路由参数变化:

watch: {
  '$route'(to, from) {
    // 对路由变化作出响应
  }
}

路由模式

hash模式(默认):

const router = new VueRouter({
  mode: 'hash',
  routes
})

history模式(需要服务器配置支持):

vue 实现跳转

const router = new VueRouter({
  mode: 'history',
  routes
})

路由懒加载

使用动态导入实现路由懒加载:

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

嵌套路由

定义嵌套路由:

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

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

<div class="user">
  <router-view></router-view>
</div>

路由重定向和别名

重定向:

const routes = [
  { path: '/home', redirect: '/' }
]

命名重定向:

const routes = [
  { path: '/home', redirect: { name: 'homepage' } }
]

路由别名:

const routes = [
  { path: '/', component: Home, alias: '/home' }
]

导航守卫中的元字段

定义路由元信息:

const routes = [
  {
    path: '/admin',
    meta: { requiresAuth: true }
  }
]

在守卫中使用:

router.beforeEach((to, from, next) => {
  if (to.matched.some(record => record.meta.requiresAuth)) {
    // 需要认证
  }
})

标签: 跳转vue
分享给朋友:

相关文章

vue实现微博发布动态

vue实现微博发布动态

使用Vue实现微博发布动态功能 创建Vue组件结构 新建一个WeiboPost.vue组件,包含文本框、图片上传和发布按钮: <template> <div class="we…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue 实现图钉

vue 实现图钉

实现图钉效果的步骤 在Vue中实现图钉(固定位置)效果,可以通过CSS的position: sticky属性或监听滚动事件动态修改元素样式。以下是两种常见方法: 方法一:使用CSS的position…