vue 路由 实现
Vue 路由实现方法
Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的详细方法:
安装 Vue Router
通过 npm 或 yarn 安装 Vue Router:
npm install vue-router
或
yarn add 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 或 main.ts 中引入路由并挂载到 Vue 应用:
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> 和 <router-view>:
<template>
<div>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>
</div>
</template>
动态路由匹配
通过冒号 : 定义动态路由参数:
const routes = [
{
path: '/user/:id',
name: 'User',
component: User,
},
];
在组件中通过 $route.params 访问参数:
export default {
mounted() {
console.log(this.$route.params.id);
},
};
路由导航守卫
使用导航守卫控制路由跳转:
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isAuthenticated) {
next('/login');
} else {
next();
}
});
嵌套路由
通过 children 属性配置嵌套路由:
const routes = [
{
path: '/user',
component: User,
children: [
{
path: 'profile',
component: UserProfile,
},
{
path: 'posts',
component: UserPosts,
},
],
},
];
路由懒加载
通过动态导入实现路由懒加载:
const routes = [
{
path: '/about',
name: 'About',
component: () => import('../views/About.vue'),
},
];
编程式导航
通过 router.push 或 router.replace 实现编程式导航:
this.$router.push('/about');
this.$router.replace('/about');
路由元信息
通过 meta 字段定义路由元信息:
const routes = [
{
path: '/admin',
meta: { requiresAuth: true },
},
];
路由模式
Vue Router 支持两种路由模式:
createWebHistory: HTML5 模式(无#)createWebHashHistory: Hash 模式(带#)
const router = createRouter({
history: createWebHashHistory(), // 或 createWebHistory()
routes,
});
路由重定向和别名
通过 redirect 和 alias 配置重定向和别名:
const routes = [
{
path: '/home',
redirect: '/',
},
{
path: '/',
alias: '/home',
},
];
路由过渡效果
通过 <transition> 包裹 <router-view> 实现过渡效果:
<template>
<transition name="fade" mode="out-in">
<router-view></router-view>
</transition>
</template>
<style>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
</style>
总结
Vue Router 提供了丰富的功能来管理单页面应用的路由。通过上述方法可以实现路由的基本配置、动态路由、嵌套路由、导航守卫等功能,满足大多数应用的需求。







