当前位置:首页 > VUE

vue实现路由导航

2026-03-26 20:40:46VUE

Vue 路由导航实现方法

安装 Vue Router

在项目中安装 Vue Router 依赖:

npm install vue-router

配置路由

创建路由配置文件(通常为 router/index.js):

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'

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

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

注册路由

在 main.js 中注册路由:

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

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

路由视图

在 App.vue 中添加路由视图:

<template>
  <div id="app">
    <router-view/>
  </div>
</template>

导航方式

声明式导航(使用 <router-link>):

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

编程式导航(使用 router.push):

vue实现路由导航

methods: {
  goToAbout() {
    this.$router.push('/about')
    // 或使用命名路由
    // this.$router.push({ name: 'About' })
  }
}

路由传参

路径参数

// 路由配置
{
  path: '/user/:id',
  name: 'User',
  component: User
}

// 导航方式
this.$router.push('/user/123')
// 或
this.$router.push({ name: 'User', params: { id: 123 } })

查询参数

this.$router.push({ path: '/search', query: { keyword: 'vue' } })

路由守卫

全局前置守卫:

vue实现路由导航

router.beforeEach((to, from, next) => {
  // 进行权限验证等操作
  if (to.meta.requiresAuth && !isAuthenticated) {
    next('/login')
  } else {
    next()
  }
})

组件内守卫:

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

嵌套路由

配置嵌套路由:

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

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

<template>
  <div class="user">
    <h2>User</h2>
    <router-view/>
  </div>
</template>

路由懒加载

优化性能,按需加载路由组件:

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

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

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

相关文章

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue实现groupbox

vue实现groupbox

Vue 实现 GroupBox 组件 在 Vue 中实现类似 GroupBox 的效果可以通过自定义组件完成。GroupBox 通常是一个带有标题的边框容器,用于将相关控件分组显示。 基本实现方法…

vue实现开关

vue实现开关

Vue 实现开关组件的方法 使用原生HTML和Vue数据绑定 通过v-model绑定复选框的checked状态,结合CSS样式实现开关效果: <template> <label…

vue拖动实现

vue拖动实现

实现 Vue 拖动功能的方法 使用 HTML5 拖放 API 在 Vue 中可以利用 HTML5 的原生拖放 API 实现拖动功能。通过 draggable 属性标记可拖动元素,结合 @dragsta…

vue 实现平面

vue 实现平面

Vue 实现平面的方法 在 Vue 中实现平面效果通常涉及 CSS 样式、UI 框架或自定义组件的使用。以下是几种常见方法: 使用 CSS 样式 通过 Vue 的样式绑定或 scoped CSS 为…

vue实现追加

vue实现追加

追加数据到数组或列表 在Vue中追加数据到数组或列表,可以通过push方法或concat方法实现。以下是几种常见的实现方式: 方法一:使用push方法 this.items.push(newIte…