当前位置:首页 > VUE

vue路由实现介绍

2026-01-14 06:19:34VUE

Vue 路由基础概念

Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。它通过动态映射 URL 到组件,实现无刷新页面切换。核心功能包括:

  • 嵌套路由:支持多层级的路由配置。
  • 模块化路由配置:通过 JavaScript 对象定义路由规则。
  • 路由参数:通过动态路径参数(如 /user/:id)传递数据。
  • 导航守卫:控制路由跳转前后的逻辑(如权限验证)。

安装与基本配置

通过 npm 或 yarn 安装 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;

main.js 中挂载路由:

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

createApp(App).use(router).mount('#app');

动态路由与参数传递

通过冒号 : 定义动态路径参数,例如:

{ path: '/user/:id', component: User }

在组件中通过 $route.params 获取参数:

export default {
  mounted() {
    console.log(this.$route.params.id);
  }
}

或使用 Vue Router 4 的 Composition API:

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

编程式导航

通过 router.push<router-link> 实现跳转:

// 方法 1:字符串路径
router.push('/about');

// 方法 2:带参数的对象
router.push({ path: '/user', query: { id: '123' } });

模板中使用 <router-link>

<router-link to="/about">About</router-link>
<router-link :to="{ path: '/user', query: { id: '123' }}">User</router-link>

路由懒加载

通过动态导入提升性能,减少初始加载时间:

vue路由实现介绍

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

常见问题与优化

  • 404 页面处理
    { path: '/:pathMatch(.*)*', component: NotFound }
  • 滚动行为
    const router = createRouter({
      scrollBehavior(to, from, savedPosition) {
        return { top: 0 }; // 每次切换路由滚动到顶部
      }
    });

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

相关文章

拖拽式编程vue实现

拖拽式编程vue实现

拖拽式编程在 Vue 中的实现方法 使用 HTML5 原生拖放 API Vue 可以结合 HTML5 的拖放 API 实现基础拖拽功能。通过 draggable 属性标记可拖拽元素,监听 dragst…

vue实现节流

vue实现节流

vue实现节流的方法 在Vue中实现节流(throttle)功能,通常用于限制高频事件的触发频率,例如滚动、输入或按钮点击。以下是几种常见的实现方式: 使用Lodash的throttle函数 安装L…

vue实现联动

vue实现联动

Vue 实现联动效果 联动效果通常指多个组件或表单元素之间相互影响,例如选择省份后动态加载城市列表。Vue 提供了多种方式实现联动,包括数据绑定、计算属性、侦听器等。 数据驱动联动 通过 Vue 的…

vue路由实现iframe

vue路由实现iframe

在Vue中实现iframe嵌入可以通过路由配置和组件动态加载来完成。以下是具体实现方法: 路由配置 在Vue Router的路由配置中,通过component属性动态加载iframe组件。需要将目标…

vue实现搜索过滤

vue实现搜索过滤

Vue 实现搜索过滤 使用计算属性实现搜索过滤 在 Vue 中,计算属性(computed)是实现搜索过滤的常见方法。通过计算属性动态过滤数据,无需修改原始数据。 <template>…

vue 实现页面注册

vue 实现页面注册

Vue 实现页面注册功能 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,通常命名为 Register.vue。该组件包含用户名、邮箱、密码等输入字段,以及提交按钮。 <templa…