vue2.x与3.x路由模式

路由模式

vue的路由模式有两种,分别为history和hash模式。

设置路由模式

在vueRouter的构造函数中的选项对象中设置mode属性的值为你想要的模式

const router = new VueRouter({
    mode: "history",//设置路由模式为history
    routes
});

history模式

history模式利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。
使用history模式后URL地址会变成使用/连接的形式

const router = new VueRouter({
    mode: "history",//设置路由模式为history
    routes
});

在这里插入图片描述

hash模式

hash是vue路由的默认模式,使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。
使用hash模式后URL地址中会有一个#符号。

const router = new VueRouter({
    mode: "hash",
    routes
});

在这里插入图片描述
hash模式的原理是通过hashchange事件来坚挺hash的变化进行相关操作

window.onhashchange=function(event){
console.log(event.oldUrl,event.newUrl);
}

hash模式和history模式的区别

在history模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,http://www.abc.com/book/id。如果后端缺少对 /book/id 的路由处理,将返回 404 错误。
在这里插入图片描述
在这里插入图片描述
在hash模式下只有#符号之前的路径会被包含在请求中,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。所以,aaa.com/#/id=5请求的地址是aaa.com,不会报错

在这里插入图片描述
在这里插入图片描述
所以,使用history时要确保服务器考虑到了所有可能的url。
在history模式下每改变一次url就会发送一次请求,而hash模式改变路径只是发送相同请求,它只是改变#符号的信息。这也是使用history模式出入不存在的url会报错的原因。
在history模式下可以使用history的go、forward、back、pushState和replaceState方法进行历史纪录的操作。
其中pushState和replaceState即使修改了url也不会立即发送请求,因为这两个方法应用于浏览器的历史记录栈,在当前已有的 back、forward、go 的基础之上,它们提供了对历史记录进行修改的功能。

使用场景

  1. hash模式通常应用在单页面应用中
    因为单页面应用只有一个页面,只是在一个页面上修改内容,如果使用history模式会发送不同的请求,请求不同的页面,因此容易出现报错。
  2. history可以用来美化url
    由于hash模式中会带一个#符号看起来不太美观因此可以使用history进行美化

在Vue3.x中设置路由模式为history

VueRouter.createRouter({
	 history: createWebHashHistory(),
})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端御书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值