vue路由之路由的两种模式

本文介绍了前端路由的两种常见模式:Hash模式和History模式。Hash模式的路由中带有'#',改变hash值不会重新加载页面,适合简单的路由管理;而History模式利用HTML5的pushState和replaceState API,实现无'#'的干净URL,通过onpopstate事件监听路由变化。History模式在路由切换时不发请求,但刷新可能导致404,解决方案是让所有路径返回index.html。两者的比较在于History模式更灵活,但需注意服务器配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

专栏目录请点击

简介

  1. 一般路由分两种形式
    1. 一种是哈希路由,最明显的特征就是路由中有一个#
    2. 还有一种就是history路由,路由中不带#

hash路由

  1. hash值:比如 'http://www.baidu.com/#/abc' hash 的值为 '#/abc'
  2. hash值虽然出现在在url中,但是并不会包含在http请求中,因此hash值改变,并不会重新加载页面
  3. 但是hash值的改变会触发onhashchange 事件,我们可以通过监听然后渲染自己要渲染的组件

history模式

  1. 他是通过H5新增的apipushState()replaceState() 应用于浏览器的历史记录
  2. 当他执行修改的时候,虽然改变了url,但是不会向后端发送请求
  3. 我们可以通过onpopstate 事件,来监听history的变化,然后渲染自己需要渲染的组件,达到路由的效果

两种模式的比较

在大部分情况下,两者都是差不多的,但是hash模式主要有一下的优势

  1. 使用 pushState()来设置url,可以是当前url同源的任意url,而hash只能修改#后的内容,所以值可以设置与当前同源的url
  2. 如果pushState()设置的url与当前的url一模一样,那么记录同样会会添加到栈中,而hash值,设置新值的时候才会添加到记录栈中
  3. pushState()通参数可以添加任意的数据记录,而hash智能添加短字符串
  4. pushState可以额外设置title属性供使用 点击

history存在的问题

history存在的问题,一般就会出现在路由路径上

  • 如果前端,因为history的路径与请求后端的接口路径没有差别,当我们进行刷新的时候他会直接将路径传到后端
  • 但是后端没有相应的路由处理,就会返回404的错误

对于这种情况官方推荐的是一个覆盖所有情况的候选资源

  1. 如果url匹配不到任何的资源,那么就应该返回同一个index.html页面
  2. 这样服务器端就不会返回404的错误页面,对于所有的路径都返回index.html文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值