美文网首页
前端路由的两种模式

前端路由的两种模式

作者: darkTi | 来源:发表于2020-07-21 22:59 被阅读0次

一、hash模式

  • hash的一个特点就是url中有一个#号,通过onhashchange事件监听#号后面内容的变化来进行路由跳转;
  • 因为hash发生变化的url都会被浏览器记录下来,所以浏览器的前进后退都可以用;
  • 但是url的样子会有点丑;

二、history模式

  • history模式主要包含切换历史状态修改历史状态
  • 切换历史状态它包含back()、forward()、go()三个方法,分别是后退、前进、跳转;
  • 修改历史状态包含了pushState()和replaceState()两种方法,这两个方法都接受三个参数stateObj、title、url;

虽然它的url样子会好看一些,但是history模式有一个问题就是,如果用户F5刷新,它是会去请求服务器的,一旦服务器上没有相对应的资源,那么就会刷出404来;在hash模式中,前端路由修改的是#后面的内容,因为浏览器请求是不带#后面的内容的,所以这个对于hash是没有影响的;

三、实现一个简单路由

class Routers {
  constructor(){
    //以键对值形式存储路由
    this.routes = {}
    //当前路由的url
    this.currentUrl = ''
    //绑定this,防止监听时this改变
    this.refresh = this.refresh.bind(this)
    window.addEventListener('load',this.refresh)
    window.addEventListener('hashchange',this.refresh)
  }
  //将path路径及对应的函数储存起来
  routeCb(path,callback){
    this.routes[path] = callback || function(){}
  }
  //刷新
  refresh(){
    //获取当前路径的hash值
    this.currentUrl = location.hash.slice(1) || '/'
    //执行当前hash路径对应的函数
    this.routes[this.currentUrl]()
  }
}

代码实现: http://js.jirengu.com/sakawobaxi/2/edit

相关文章

  • Hash Vs H5 History

    当大家在写较为复杂一点的SPA时,都会使用到路由。 前端路由有两种模式: Hash模式 H5 history 模式...

  • Vue路由模式

    为了构架单页面应用,需要引入前端的路由系统Vue-router。 路由有两种模式:hash、history,默认会...

  • vue-router: history

    前端路由模式有两种 一种是 hash 模式,使用 # 导航。另一种是 Html5HistoryAPI 模式,不使用...

  • vue面试题(第九天)

    1.Vue路由的实现原理 更新视图但不重新请求页面,是前端路由原理的核心之一 vue路由的实现有两种模式<1>ha...

  • 前端路由的两种模式

    Hash History 平时单页面网站经常使用的模式,# 有两种情况,一个是我们所谓的锚点,比如典型的回到顶部按...

  • 前端路由的两种模式

    概述 灵感偶现,重新整理一下Vue的两种前端路由模式:hash和history。 什么是单页面应用(SPA)? 首...

  • 前端路由的两种模式

    一、hash模式 hash的一个特点就是url中有一个#号,通过onhashchange事件监听#号后面内容的变化...

  • 前端路由的两种模式

    我们都知道单页应用的路由有两种模式:hash 和 history,那么它们的工作原理是是什么? 浏览器提供的路由跳...

  • 2019-06-23 Vue-Router中history与ha

    hash前端路由,无刷新history 会去请求接口 vue-router提供两种模式的原因: vue 是渐进...

  • vue-router的两种模式

    vue-router两种模式,hash,history 为了构建SPA(单页面应用),需要引入前端路由系统,这就是...

网友评论

      本文标题:前端路由的两种模式

      本文链接:https://www.haomeiwen.com/subject/dhlwghtx.html