首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
第 14 章 基于Vue的网络框架vue-axios的应用
14.1 使用vue-axios请求天气数据
14.1.1 使用互联网上免费的数据服务
14.1.2 使用vue-axios进行数据请求
14.2 vue-axios实用功能介绍
14.2.1 通过配置的方式进行数据请求
14.2.2 请求的配置与响应数据结构
14.2.3 拦截器的使用
14.3 实战:天气预报应用
14.3.1 搭建页面框架
14.3.2 实现天气预报应用核心逻辑
第 15 章 Vue路由管理
15.1 Vue Router的安装与简单使用
15.1.1 Vue Router的安装
15.1.2 一个简单的Vue Router的使用示例
15.2 带参数的动态路由
15.2.1 路由参数匹配
15.2.2 路由匹配的语法规则
15.2.3 路由的嵌套
15.3 页面导航
15.3.1 使用路由方法
15.3.2 导航历史控制
15.4 关于路由的命名
15.4.1 使用名称进行路由切换
15.4.2 路由视图命名
15.4.3 使用别名
15.4.4 路由重定向
15.5 关于路由传参
15.6 路由导航守卫
15.6.1 定义全局的导航守卫
15.6.2 为特定的路由注册导航守卫
15.7 动态路由
第 16 章 Vue状态管理
16.1 认识Vuex框架
16.1.1 关于状态管理
16.1.2 安装与体验Vuex
16.2 Vuex中的一些核心概念
16.2.1 Vuex中的状态state
16.2.2 Vuex中的Getter方法
16.2.3 Vuex中的Mutation
16.2.4 Vuex中的Action
16.2.5 Vuex中的Module 333
当前位置:
首页>>
技术小册>>
TypeScript和Vue从入门到精通(五)
小册名称:TypeScript和Vue从入门到精通(五)
### 15.3 页面导航 在Web应用中,页面导航是用户与应用程序交互的核心部分,它决定了用户如何从一个视图(或页面)跳转到另一个视图。在Vue.js结合TypeScript的项目中,实现高效的页面导航不仅涉及前端路由的配置与管理,还关系到组件的加载与卸载、状态的保持与恢复等多个方面。本章节将深入探讨如何在TypeScript和Vue项目中实现页面导航,包括Vue Router的使用、动态路由匹配、嵌套路由、导航守卫以及路由懒加载等高级特性。 #### 15.3.1 Vue Router简介 Vue Router是Vue.js的官方路由管理器,它和Vue.js深度集成,让构建单页面应用(SPA)变得易如反掌。Vue Router允许你以组件化的方式定义路由,并通过简单的API实现页面间的跳转和组件的渲染。在TypeScript环境下使用Vue Router,首先需要安装并配置Vue Router及其类型定义文件。 ```bash npm install vue-router@4 vue-router-next-types # 或者使用yarn yarn add vue-router@4 vue-router-next-types ``` 注意:这里假设你使用的是Vue 3和Vue Router 4,因为Vue Router 3与Vue 2配合使用,而Vue Router 4则专为Vue 3设计。 #### 15.3.2 基本路由配置 在Vue项目中配置Vue Router通常涉及以下几个步骤: 1. **创建路由实例**:首先,你需要定义路由,即URL路径与组件之间的映射关系。 2. **创建路由守卫**(可选):根据需要设置导航守卫,以控制路由的进入、离开等操作。 3. **将路由实例挂载到Vue实例**:最后,将路由实例作为选项传递给Vue实例。 以下是一个基本的路由配置示例: ```typescript // router/index.ts import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router'; import Home from '../views/Home.vue'; import About from '../views/About.vue'; const routes: Array<RouteRecordRaw> = [ { path: '/', name: 'Home', component: Home }, { path: '/about', name: 'About', component: About } ]; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes }); export default router; ``` #### 15.3.3 动态路由匹配 动态路由匹配允许我们捕获URL中的动态片段,并将其作为参数传递给组件。这在处理具有相同结构但不同ID的页面时非常有用,如用户资料页。 ```typescript const routes: Array<RouteRecordRaw> = [ { path: '/user/:id', name: 'User', component: () => import('../views/User.vue') } ]; ``` 在`User.vue`组件中,你可以通过`this.$route.params.id`(对于星号片段)或`this.$route.params.id`(对于命名参数)访问这个动态片段。但在Vue Router 4中,对于动态路由匹配,通常使用`this.$route.query.id`(如果是查询参数)或`this.$route.params.id`(如果是路由参数,需确保路由配置中使用了`props: true`或`props: route => ({ id: route.params.id })`)。 #### 15.3.4 嵌套路由 嵌套路由允许我们在一个路由下嵌套定义多个子路由。这在构建具有复杂层级结构的应用时非常有用,如一个博客应用中的文章列表和文章详情页面。 ```typescript const routes: Array<RouteRecordRaw> = [ { path: '/blog', name: 'Blog', component: BlogLayout, // 假设有一个BlogLayout组件作为容器 children: [ { path: '', // 空字符串表示根路径 component: BlogIndex }, { path: 'post/:id', name: 'Post', component: PostDetail } ] } ]; ``` #### 15.3.5 导航守卫 Vue Router提供了多种导航守卫,允许我们在路由发生变化的不同阶段执行代码。这些守卫包括全局守卫、路由独享守卫和组件内的守卫。 - **全局前置守卫**:`router.beforeEach`,在路由即将改变前调用。 - **全局解析守卫**(Vue Router 4新增):`router.beforeResolve`,在解析守卫之后调用,但在DOM更新之前。 - **全局后置守卫**:`router.afterEach`,在路由已经改变后调用。 - **路由独享守卫**:在路由配置中直接定义。 - **组件内的守卫**:`beforeRouteEnter`、`beforeRouteUpdate`(Vue Router 2.2+)、`beforeRouteLeave`。 例如,使用全局前置守卫来检查用户是否登录: ```typescript router.beforeEach((to, from, next) => { // 假设有一个函数isAuthenticated()来检查用户是否登录 if (to.matched.some(record => record.meta.requiresAuth)) { if (!isAuthenticated()) { next({ path: '/login', query: { redirect: to.fullPath } }); } else { next(); } } else { next(); // 确保一定要调用 next() } }); ``` #### 15.3.6 路由懒加载 路由懒加载是一种优化技术,它允许我们将应用分割成多个小块,并仅在需要时才加载它们。在Vue Router中,这可以通过动态导入(`import()`)语法来实现。 ```typescript const routes: Array<RouteRecordRaw> = [ { path: '/foo', component: () => import(/* webpackChunkName: "foo" */ '../views/Foo.vue') }, { path: '/bar', component: () => import(/* webpackChunkName: "bar" */ '../views/Bar.vue') } ]; ``` 通过指定`webpackChunkName`,我们可以控制打包后的文件名,从而优化加载性能。 #### 15.3.7 总结 页面导航是Vue.js应用中不可或缺的一部分,Vue Router为我们提供了强大的路由管理功能。通过合理使用Vue Router,我们可以构建出结构清晰、性能优良的单页面应用。在TypeScript环境下,结合Vue Router的类型定义,我们可以享受到类型检查和自动补全等IDE特性带来的便利,进一步提升开发效率。本章节介绍了Vue Router的基本用法、动态路由匹配、嵌套路由、导航守卫以及路由懒加载等关键特性,希望能够帮助读者更好地理解和使用Vue Router。
上一篇:
15.2.3 路由的嵌套
下一篇:
15.3.1 使用路由方法
该分类下的相关小册推荐:
Vue原理与源码解析
Vue3技术解密
Vue面试指南
VUE组件基础与实战
Vue源码完全解析
Vue.js从入门到精通(二)
Vue.js从入门到精通(一)
TypeScript和Vue从入门到精通(二)
TypeScript和Vue从入门到精通(四)
vue项目构建基础入门与实战
Vue.js从入门到精通(四)
Vue.js从入门到精通(三)