当前位置:首页 > VUE

vue router实现导航

2026-02-19 01:46:29VUE

Vue Router 导航实现方法

安装与基础配置 确保已安装 Vue Router,可通过 npm 或 yarn 安装:

npm install vue-router

在项目中创建路由配置文件(如 router/index.js):

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

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

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

export default router;

路由视图与链接 在根组件(如 App.vue)中添加 <router-view> 作为路由出口:

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

编程式导航 通过 useRouter 在组件中实现编程跳转:

import { useRouter } from 'vue-router';

export default {
  setup() {
    const router = useRouter();
    const navigate = () => {
      router.push('/about'); // 跳转路由
      // router.replace('/about'); // 替换当前路由
      // router.go(-1); // 后退
    };
    return { navigate };
  }
};

动态路由与参数 定义带参数的路由:

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

在组件中通过 useRoute 获取参数:

vue router实现导航

import { useRoute } from 'vue-router';

export default {
  setup() {
    const route = useRoute();
    console.log(route.params.id); // 获取动态参数
  }
};

导航守卫 全局前置守卫示例:

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

组件内守卫:

export default {
  beforeRouteEnter(to, from, next) {
    // 在渲染该组件的对应路由被验证前调用
    next();
  }
};

嵌套路由 配置子路由:

vue router实现导航

const routes = [
  {
    path: '/parent',
    component: Parent,
    children: [
      { path: 'child', component: Child }
    ]
  }
];

父组件需包含嵌套的 <router-view>

<template>
  <div>
    <h2>Parent</h2>
    <router-view/>
  </div>
</template>

路由元信息 通过 meta 字段传递额外信息:

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

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

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

注意事项

  • 路由模式需根据需求选择 createWebHistory(需服务器支持)或 createWebHashHistory
  • 动态路由参数变化时需监听 route.params 变化
  • 导航守卫中确保始终调用 next() 避免阻塞

标签: vuerouter
分享给朋友:

相关文章

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue实现逻辑

vue实现逻辑

Vue 实现逻辑的核心概念 Vue.js 是一个渐进式 JavaScript 框架,其核心逻辑围绕数据驱动和组件化开发。通过响应式系统、虚拟 DOM 和组件生命周期等机制,Vue 实现了高效的前端开发…

vue实现动画

vue实现动画

Vue 实现动画的方法 Vue 提供了多种方式来实现动画效果,包括内置的过渡系统、第三方动画库以及直接操作 CSS 或 JavaScript 动画。 使用 Vue 内置过渡系统 Vue 的 <…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue实现computed

vue实现computed

Vue 中 computed 的实现原理 computed 属性是 Vue 的一个核心特性,它基于响应式依赖进行缓存,仅在依赖发生变化时重新计算。以下是 computed 的实现方式: 基本用法 在…

vue实现拖拉

vue实现拖拉

实现拖拽功能的基本步骤 在Vue中实现拖拽功能可以通过原生HTML5的拖放API或第三方库如vuedraggable完成。以下是两种方法的详细说明。 使用HTML5原生拖放API HTML5提供了原…