当前位置:首页 > VUE

vue导航实现

2026-02-10 13:46:14VUE

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

export default router

在主文件中引入并使用路由:

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

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

导航菜单实现

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

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

动态路由实现

定义带参数的路由:

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

在组件中访问路由参数:

vue导航实现

import { useRoute } from 'vue-router'

export default {
  setup() {
    const route = useRoute()
    const userId = computed(() => route.params.id)
    return { userId }
  }
}

导航守卫

实现全局前置守卫:

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

实现路由独享守卫:

const routes = [
  {
    path: '/admin',
    component: Admin,
    beforeEnter: (to, from, next) => {
      if (adminAccess) next()
      else next('/')
    }
  }
]

嵌套路由

定义嵌套路由结构:

vue导航实现

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

在父组件中添加 <router-view> 显示子路由:

<template>
  <div>
    <h2>User Page</h2>
    <router-view/>
  </div>
</template>

编程式导航

在组件方法中使用编程式导航:

import { useRouter } from 'vue-router'

export default {
  setup() {
    const router = useRouter()

    const goToAbout = () => {
      router.push('/about')
    }

    const replaceToHome = () => {
      router.replace('/')
    }

    return { goToAbout, replaceToHome }
  }
}

命名路由

定义命名路由:

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

使用命名路由进行导航:

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

标签: vue
分享给朋友:

相关文章

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…

vue实现贴图

vue实现贴图

Vue 实现贴图功能 在Vue中实现贴图功能通常涉及将图片动态添加到指定位置或元素上。以下是几种常见实现方式: 使用v-bind动态绑定图片 通过数据驱动的方式动态更换图片源: <templ…

vue computed 实现

vue computed 实现

computed 的基本用法 在 Vue 中,computed 用于声明计算属性,这些属性基于响应式依赖进行缓存。只有当依赖发生变化时,计算属性才会重新计算。 new Vue({ data: {…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue实现签章

vue实现签章

Vue 实现签章功能 签章功能通常包括手写签名、电子印章等。以下是基于 Vue 的实现方法: 使用 canvas 实现手写签名 安装依赖(如需要): npm install signatu…