前端路由的两种方式,hash与history

前端路由

前端路由的本质是监听url变化,然后匹配路由规则,无需刷新就可以显示相应的页面,目前单页面路由主要有两种方式

  • hash 模式
  • history 模式

hash模式实现路由

为什么要使用hash模式:页面使用Ajax发送异步请求可以实现无缝刷新,但这种方式也存在使得浏览器的url不发生任何变化的时候就完成了请求,使得用户体验不佳,而且也导致了用户下次使用相同的url访问上次的页面时时内容无法重新呈现的问题。hash模式是解决这个问题的途径之一。
主要通过location.hash设置hash Url,也就是url的符号#后面的值。当哈希值发生变化时,不会向服务器请求发送数据,可以通过hashchange事件来监听hash的变化,实现相应的功能

  • location.hash 设置/获取hash
  • hashchange监听url变化,解析url实现页面路由跳转

hash模式需要注意的几个点

  • 散列值不会随请求发送到服务器
  • 散列值会反映在浏览器url上
  • 只修改浏览器的哈希部分,按下回车,浏览器不会发送任何请求给服务器,只会触发hashchange事件并且修改location.hash的值
  • html a标签,设置id锚点,点击触发时,浏览器会自动设置location.hash值,同时触发hashchange事件,url上也会反映这一变化
  • hash模式下,页面刷新不会向浏览器发送请求

猜你喜欢

转载自www.cnblogs.com/ltfxy/p/12501953.html