当前位置:首页 > VUE

vue实现导航

2026-02-10 13:03:17VUE

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

在组件中使用路由链接和视图:

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

动态路由实现

配置带参数的路由:

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

在组件中获取路由参数:

import { useRoute } from 'vue-router'

const route = useRoute()
console.log(route.params.id)

导航守卫实现权限控制

全局前置守卫:

vue实现导航

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: '/user',
    component: User,
    children: [
      { path: 'profile', component: Profile },
      { path: 'posts', component: Posts }
    ]
  }
]

在父组件中添加子路由视图:

<template>
  <div>
    <h1>User</h1>
    <router-view></router-view>
  </div>
</template>

编程式导航实现

在组件方法中使用导航:

vue实现导航

import { useRouter } from 'vue-router'

const router = useRouter()

function navigate() {
  router.push('/about')
  // 或 router.replace('/about')
  // 或 router.go(-1)
}

命名路由实现

配置命名路由:

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

使用命名路由导航:

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

在模板中使用命名路由:

<router-link :to="{ name: 'user', params: { id: 123 } }">
  User
</router-link>

路由元信息实现

配置路由元信息:

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

在导航守卫中使用元信息:

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth) {
    // 验证逻辑
  }
})

标签: vue
分享给朋友:

相关文章

vue slot实现

vue slot实现

vue slot 的实现方法 在 Vue 中,slot 是一种内容分发机制,允许父组件向子组件传递模板内容。以下是几种常见的 slot 实现方式: 默认 slot 默认 slot 是最基础的 slo…

vue实现删除

vue实现删除

Vue 实现删除功能的方法 在 Vue 中实现删除功能通常涉及以下几个步骤: 数据绑定与列表渲染 使用 v-for 指令渲染列表数据,并为每个项绑定唯一标识符(如 id)。例如: <…

vue 实现列表

vue 实现列表

Vue 实现列表的方法 在 Vue 中实现列表通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式: 基础列表渲染 使用 v-for 指令遍历数组,渲染列表项。ite…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export default…

vue实现datalist

vue实现datalist

使用 Vue 实现 HTML5 的 datalist 功能 HTML5 的 <datalist> 元素提供了一种自动完成输入框的功能,允许用户在输入时从预定义的选项列表中选择。以下是几种在…

vue分页实现

vue分页实现

实现Vue分页的几种方法 使用Element UI的分页组件 安装Element UI库后,可以直接使用其分页组件。以下是一个基本示例: <template> <div>…