当前位置:首页 > 技术文章 > 正文内容

Vue Router 4 路由操作 - 路由导航

zonemu2个月前 (07-12)技术文章16

路由导航分为 声明式导航编程式导航

通过 <router-link to="..."> 标签跳转的方式为声明式导航

通过 路由实例对象(router.push(...))跳转的为编程式导航

导航到不同的位置

想要导航到不同的URL,使用 router.push 方法。该方法会向 浏览器的历史记录栈 新增一条记录。当点击浏览器的回退按钮时,会退回到之前的URL。

在声明式导航中,我们使用<router-link>标签进项跳转,类似于HTML中的a标签。需要注意的是,当点击<router-link>标签时,内部调用的依然是router.push方法进行跳转。

不管是<router-link>标签的 to 属性,还是router实例对象的 push 方法,都有相同的以下三种类型的值:

path路由地址字符串

// 声明式
<router-link to="/home"></router-link>

// 编程式
router.push('/home')

包含path的路由地址对象

// 声明式
<router-link :to="{ path: '/home' }"></router-link>

// 编程式
router.push({ path: '/home' })

包含name的路由地址对象

// 声明式
<router-link :to="{ name: 'Home' }"></router-link>

// 编程式
router.push({ name: 'Home' })

替换当前位置

router.push 有所不同的是,虽然都是导航到浏览器的某个历史记录,但 router.replace 会替换当前浏览器历史记录栈中的对应的记录,而 router.push 是新增。

// router.replace与router.push使用方式类似
// 声明式
<router-link :to="{ name: 'Home' }" replace></router-link>

// 编程式
router.replace({ name: 'Home' })

在历史记录中随意跳转

使用router.go可以在浏览器的历史记录栈中随意切换,不会新增历史记录,也不会替换当前历史记录。

// 此方式只适用于编程式导航
// n 为浏览器历史记录栈长度范围内的数字
router.go(n)

router.go(1) // 前进
router.go(-1) // 后退

router.go(2) // 前进两条记录

router.go(100) // 如果历史记录没有那么多条数,则静默失败

返回之前的历史记录

使用router.back返回跳转之前的历史记录,相当于 router.go(-1)需要注意的是,在使用 router.replace 跳转方式时,router.back 不能返回到之前的历史记录,因为已经被替换掉了。

// 此方式只适用于编程式导航
router.back()

在历史记录中前进

使用 router.forward 在历史记录中前进,相当于 router.go(1)

// 此方式只适用于编程式导航
router.forward()

一些额外的扩展知识

Vue Router模仿了 Browser History APIs,如果有这方面的使用经验,则使用Vue Router会非常熟悉,如果有条件的可以去自己学习一下。

相关文章

Garuda Linux:现代化、注重性能与美观的Linux发行版

什么是 Garuda Linux?Garuda Linux 是一个基于 Arch Linux 的现代化、注重性能与美观的桌面操作系统。它面向对性能有较高要求的用户,尤其受到 Linux 爱好者、游戏玩...

快速上手React(快速上手的高级表达)

web前端三大主流框架1、Angular大家眼里比较牛的框架,甚至有人说三大框架中只有它能称得上一个完整的框架,因为它包含的东西比较完善,包含模板,数据双向绑定,路由,模块化,服务,过滤器,依赖注入等...

Vue3快速入门(vue3快速上手)

  1.核心语法  1. 1选项式和组合式的区别  Vue2的API设计是Options(选项)风格的。  Vue3的API设计是Composition(组合)风格的。  Options类型的 API...

vue3-内置组件-Teleport(vue内置指令有哪些)

Teleport<Teleport> 是一个内置组件,它可以将一个组件内部的一部分模板“传送”到该组件的 DOM 结构外层的位置去。基本用法有时我们可能会遇到这样的场景:一个组件模板的一部...

java调用API操作GitLab(java调用zabbix api)

最近需要在一个WEB项目中集成GitLab,用到了GitLab的API操作,在网上找了很久都是说直接调用GitLab的Http接口,而且API官方只有javadoc没有其它说明文档,特别记录下,以备查...

配置GitLab流水线和门禁系统(gitlab工作流)

在项目开发的过程中,为了保证代码质量,我们会使用诸多代码质量检测工具,这些工具或是在本地,或是在云端,虽然工具可以检测出异常问题,但是这些问题还是需要我们程序员来修复,如果我们不强制所有人必须修复异常...