前端路由实现(Vue Router 4 路由操作 - 路由导航)

前端路由实现(Vue Router 4 路由操作 - 路由导航)
Vue Router 4 路由操作 - 路由导航

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

通过 <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的路由地址对象

前端路由实现(Vue Router 4 路由操作 - 路由导航)

// 声明式<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会非常熟悉,如果有条件的可以去自己学习一下。

文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有

相关阅读