vue-router
在版本 4 中进行了一些重大的更改,以适应 Vue 3 的新特性和改进。以下是 vue-router
3 和 4 之间的主要区别:
创建和使用:
vue-router 3:
new VueRouter()
创建一个路由实例。Vue.use(VueRouter)
安装路由插件。vue-router 4:
createRouter()
创建一个路由实例。Vue.use()
。相反,你将路由实例传递给 Vue 应用的 use()
方法。路由配置:
vue-router 3:
mode: 'history'
用于启用 HTML5 历史模式。vue-router 4:
history: createWebHistory()
启用 HTML5 历史模式。导航守卫:
vue-router 3:
beforeEnter
、beforeLeave
等钩子。vue-router 4:
beforeEnter
、beforeLeave
等钩子,但它们的参数和调用方式有所不同,更加符合 Composition API 的风格。路由记录:
vue-router 3:
vue-router 4:
children
属性现在是 routes
。其他:
vue-router 4 为 Vue 3 的 Composition API 提供了更好的支持,例如 useRoute
和 useRouter
。
src\main.ts
import { createApp } from 'vue';
import App from './App.vue';
import router from './router';
createApp(App).use(router).mount('#app');
src\App.vue
<script setup lang="ts">
</script>
<template>
<h1>App</h1>
<nav>
<router-link to="/">Home</router-link> |
<router-link to="/users">User Management</router-link> |
<router-link to="/profile">Personal Center</router-link>
</nav>
<router-view></router-view>
</template>
<style scoped>
</style>
src\router.ts
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import User from './components/User.vue';
import Profile from './components/Profile.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/users', component: User },
{ path: '/profile', component: Profile }
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
src\components\Home.vue
<template>
<div>
<h2>Home</h2>
</div>
</template>
src\components\User.vue
<template>
<div>
<h2>User</h2>
</div>
</template>
src\components\Profile.vue
<template>
<div>
<h2>Profile</h2>
</div>
</template>