案例:Vue Router路由待办事项
学习完本章 Vue Router 路由管理的内容之后,对页面之间的跳转和切换就有了更加丰富的选择,还是在之前的待办事项系统案例的基础上,将待办事项面板和回收站面板抽象成两个页面,将原本采用 v-if
实现的切换替换为 Vue Router 来管理,并结合切换动画完善整个项目。
功能描述
主要功能和前面的待办事项系统功能一致,利用 Vue Router 实现页面切换,主要改造如下:
-
将待办事项面板和回收站面板抽象成页面组件,配置到
router.js
中。 -
改造 <navheader> 组件,使用<router-link> 替换原本的切换逻辑。
案例完整代码
新建 router.js
,配置路由信息,代码如下:
import todo from '../views/todo.vue' // 待办事项页面
import recycle from '../views/recycle.vue' // 回收站页面
import {createRouter,createWebHashHistory} from 'vue-router'
const router = createRouter({
history: createWebHashHistory(),
routes: [
{ path: '/', redirect: '/todo' }, // 配置默认路由,重定向到/todo
{ path: '/todo', component: todo },
{ path: '/recycle', component: recycle },
]
})
export default router
改造 App.vue 文件,添加 <router-view> 组件,并移除之前的 v-if
逻辑,代码如下:
<div class="container">
<div class="app-content animated bounce">
<navheader></navheader>
<router-view v-slot="{ Component }">
<transition enter-active-class="fadeIn animated faster" leave-active-class="fadeOut animated faster">
<component :is="Component"></component>
</transition>
</router-view>
</div>
</div>
最后,改造 <navheader> 组件,添加 <router-link>,代码如下:
<div class="nav-header">
<!--active-class表示激活态的class名-->
<router-link to="/todo" active-class="active">待办事项</router-link>|
<router-link to="/recycle" active-class="active">回收站</router-link>
</div>
本案例完整源码:/案例源码/Vue Router路由管理。
小结与练习
本章讲解了 Vue Router 的相关知识,主要内容包括:单页应用的定义、Vue Router概述、动态路由、导航守卫、嵌套路由、命名视图、编程式导航、路由组件传参、路由重定向、路由别名、路由元信息、Vue Router 的路由模式、滚动行为、keep-alive、路由懒加载,内容涵盖了 Vue Router 的使用、底层原理等。
Vue Router 是 Vue.js 官方的路由管理器,它和 Vue.js 的核心深度集成,可以轻松实现页面之间或者组件之间的导航交互操作,通过路由来实现大型应用的页面跳转管理,令开发者可以轻松构建单页面应用。最后建议读者自行运行本章的各个示例代码,以加深对本章知识的理解。
下面来检验一下读者对本章内容的掌握程度。
-
单页应用和多页应用的区别是什么?
-
Vue Router 中如何监听路由变化,有几种方式?
-
Vue Router 中有哪些路由模式,它们有什么区别?
-
Vue Router 中页面跳转时,如何传递参数?
-
Vue Router 中实现页面跳转时,如何保存页面的状态?