zoukankan      html  css  js  c++  java
  • 如何看待history和hash的区别

    如何看待前端路由?路由的作用是什么?

    在我看来路由有两个方面的作用:

    • 通过路由变化,实现页面之间的跳转和切换
    • 可以通过路由传递参数(query)

    路由的种类

    路由的种类可以分为以下四种

    • hash 主要是基于锚点实现
    • browser 使用的是html5中的history 这个api来实现的,每次路由发生变化都会重定向
    • memory 这种实现是在内中维护一个堆栈管理历史记录,由于比较复杂,现在一般都不用了
    • static 是后端管理路由的模式

    只介绍前端常用的两者路由方式

    hash路由

    hash路由的优点

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

    hash路由的缺点

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

    browser路由

    browser路由的优点

    • 当发生路由重定向时不会丢失url数据 ,后端也可以拿到这个数据
    • 当然,绝大多数框架一样实现了 browser路由的方式
    • 后端可以准确追踪到路由
    • 可以使用history.state获取路由的信息

    使用browser的缺点

    • 兼容性不如hash 。兼容性只到ie10
    • 需要后端支持,每次返回html文档
  • 相关阅读:
    Eclipse 添加行号
    http中 get方法 传送中文参数乱码解决办法
    第一章 java 语言概述
    Python学习
    Python学习
    Python学习
    Python学习
    Python学习
    Python学习
    Python学习
  • 原文地址:https://www.cnblogs.com/yaogengzhu/p/10946378.html
Copyright © 2011-2022 走看看