前端路由模式hash和history

  1. hash模式
    hash模式的原理是依据window对象的onhashchange事件进行监听,它的特点是:虽然hash路径出现在URL中,但是不会出现在HTTP请求中,对后端完全没有影响,因此改变hash值不会重新加载页面。

    window.onhashchange = function(e){
          console.log(e);
    }

    打印出来的结果

    可以通过location.hash获得浏览器url路径中的#部分内容,上图是#bvc,
    如果想获取#后面的内容可通过location.hash.slice(1),上图是bvc

  2. history模式
    利用了HTML5 History Interface中新增的pushState()和replaceState()方法,这两个方法应用于浏览器的历史记录栈,在当前已有的back、forward、go的基础上,他们提供了对当前浏览器进行修改的功能,只是当它们被修改时,虽然浏览器的URL发生
    了变化,但是不会立即向后端服务器发送请求,但是如果点击刷新,就会重新向后端服务器发送请求。
  3. 使用场景
    一般情况下,vue-router前端路由模式使用history和hash都可以,在美观上history比hash美观些,因为hash有自己的特定符号#
    相比于hash,history具有以下优势:
    *pushState()设置新的URL可以是任意与当前URL同源的URL,而hash只能改变#后面的内容,因此只能设置与当前URL同文档的URL
    *pushState()设置的URL与当前URL一模一样时也会被添加到历史记录栈中,而hash模式中,#后面的内容必须被修改才会被添加到新的记录栈中
    *pushState()可以通过stateObject参数添加任意类型的数据到记录中,而hash只能添加短字符串
    *pushState()可额外设置title属性供后续使用
    但是通过URL向后端发起HTTP请求的时候,history,hash具有以下区别:
    *hash模式下,只有#符号之前的内容才会包含在请求中被发送到后端,也就是说虽然后端没有对路由全覆盖,但是不会返回404错误
    *history模式下,前端的URL必须和向发送请求后端URL保持一致,否则会报404错误

原文地址:https://www.cnblogs.com/funny-code123/p/9599793.html

时间: 2024-11-11 20:15:00

前端路由模式hash和history的相关文章

Vue-两种路由模式 hash 和 history

Vue 为了构建 SPA(单页面应用),需要引入前端路由系统,这也就是 Vue-Router 存在的意义.前端路由的核心,就在于 —— 改变视图的同时不会向后端发出请求. hash 模式和 history 模式都属于浏览器自身的特性,Vue-Router 只是利用了这两个特性(通过调用浏览器提供的接口)来实现前端路由. Hash: History: 原文地址:https://www.cnblogs.com/yangchin9/p/10895721.html

前端路由的实现(三) —— History的pushState和replaceState用法

HTML5中history提供的pushState, replaceState这两个API.它们提供了操作浏览器历史栈的方法. pushState能够在不加载页面的情况下改变浏览器的URL.这个方法接受三个参数: 状态对象,新状态的标题和可选的相对URL. history.pushState(data, null, '#/page=1'); pushState接收3个参数,第一个参数为一个obj,表示浏览器的state属性: 第二个参数是document.title的值,一般设定为`null`:

前端路由简介以及vue-router实现原理

后端路由简介 路由这个概念最先是后端出现的.在以前用模板引擎开发页面时,经常会看到这样 http://www.xxx.com/login 大致流程可以看成这样: 浏览器发出请求 服务器监听到80端口(或443)有请求过来,并解析url路径 根据服务器的路由配置,返回相应信息(可以是 html 字串,也可以是 json 数据,图片等) 浏览器根据数据包的 Content-Type 来决定如何解析数据 简单来说路由就是用来跟后端服务器进行交互的一种方式,通过不同的路径,来请求不同的资源,请求不同的页

Vue-Router原理分析-路由模式和install

??单页应用(SPA, Single Page Application)的整个Web系统由一个html文件,通过Ajax和后端进行数据交互,通过一些特殊手段去加载渲染页面的不同部分,使得无需刷新整体页面,,就像使用app一样,极大的提升了用户使用体验,在Vue生态中,就是利用Vue的核心插件-Vue-Router来实现Web界面的路由跳转,so,本文就是通过学习Vue-Router,了解Vue-Router完成SPA开发的实现具体原理. Web路由简介 ??先简单说一下路由,早期Web系统路由主

前端路由的原理

什么是路由?简单的说,路由是根据不同的 url 地址展示不同的内容或页面 使用场景?前端路由更多用在单页应用上, 也就是SPA, 因为单页应用, 基本上都是前后端分离的, 后端自然也就不会给前端提供路由. 前端的路由和后端的路由在实现技术上不一样,但是原理都是一样的.在 HTML5 的 history API 出现之前,前端的路由都是通过 hash 来实现的,hash 能兼容低版本的浏览器. 两种实现前端路由的方式HTML5 History两个新增的API:history.pushState 和

前端路由hash、history原理

本文参考https://www.cnblogs.com/tugenhua0707/p/10859214.html 先来看下后端路由的实现方式: 1. 浏览器向服务器发出请求.2. 服务器监听到80端口,如果有请求过来,那么就解析url地址.3. 服务器根据客户端的路由配置,然后就返回相应的信息(比如html字符串.json数据或图片等).4. 浏览器根据数据包的 Content-Type来决定如何解析数据. 缺点: 每次路由切换的时候都需要去刷新页面,然后发出ajax请求,然后将请求数据返回回来

vue路由的两种模式,hash与history

对于Vue 这类渐进式前端开发框架,为了构建SPA(单页面应用),需要引入前端路由系统,这也就是Vue-router存在的意义.前端路由的核心,就在于——— 改变视图的同时不会向后端发出请求. 一.为了达到这个目的,浏览器提供了以下两种支持: 1.hash ——即地址栏URL中的#符号(此hsah 不是密码学里的散列运算). 比如这个URL:http://www.abc.com/#/hello, hash 的值为#/hello.它的特点在于:hash 虽然出现URL中,但不会被包含在HTTP请求

哈希路由(hash模式)和历史路由(history模式)的区别

随着 ajax 的使用越来越广泛,前端的页面逻辑开始变得越来越复杂,特别是spa的兴起,前端路由系统随之开始流行. 从用户的角度看,前端路由主要实现了两个功能(使用ajax更新页面状态的情况下): 记录当前页面的状态(保存或分享当前页的url,再次打开该url时,网页还是保存(分享)时的状态): 可以使用浏览器的前进后退功能(如点击后退按钮,可以使页面回到使用ajax更新页面之前的状态,url也回到之前的状态): 作为开发者,要实现这两个功能,我们需要做到: 改变url且不让浏览器向服务器发出请

vue路由的两种模式,hash与history的区别

1.直观区别: hash模式url带#号,history模式不带#号. 2.深层区别: hash模式url里面永远带着#号,我们在开发当中默认使用这个模式. 如果用户考虑url的规范那么就需要使用history模式,因为history模式没有#号,是个正常的url适合推广宣传 功能也有区别,比如我们在开发app的时候有分享页面,那么这个分享出去的页面就是用vue或是react做的, 咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用hist