hash和history的优缺点

hash路由

hash路由的优点

  • 兼容性比较好,兼容性达到了ie8
  • 绝大数框架的框架都基本支持hash路由方式
  • 除了会发送ajax和资源加载之外不会发送其他请求
  • 不需要在服务端进行任何设置和开发

hash路由的缺点

  • 服务端无法准确捕获路由的信息
  • 对于需要锚点功能的需求会与当前路由机制发生冲突
  • 对于需要重定向的操作,后段无法获取url全部内容,导致后台无法得到url数据,典型的例子就是微信公众号的oauth验证。

browser路由

browser路由的优点

  • 当发生路由重定向时不会丢失url数据 ,后端也可以拿到这个数据
  • history 没有#,url的改变会向服务器发请求;弥补了hash的锚点缺陷(本来hash有锚点功能,是做页面定位的,但是用来做路由就不行了),可以在url里传参也可以把参数放在一个特定的对象里面
  • 当然,绝大多数框架一样实现了 browser路由的方式
  • 后端可以准确追踪到路由
  • 可以使用history.state获取路由的信息

使用browser的缺点

  • 兼容性不如hash 。兼容性只到ie10
  • 需要后端支持,每次返回html文档

hash和history的优缺点

上一篇:清除浮动的方式有哪些?比较好的是哪一种?


下一篇:线段树乱写