zoukankan      html  css  js  c++  java
  • 单页面路由

    深度剖析SPA前端路由原理与实现方式
    1.什么是SPA
    single page web application
    web项目只有一个HTML页面,传统页面有好几个HTML文件。切换路由的时候,不会跳转路由
    通过切换视图
    2.什么是前端路由
    根据不同的url地址展示不同的内容或页面
    后端:mvc,根据客户提交的路径,将请求解析到相应的控制器
    所谓的路由:就是负责相应的客户的http请求,客户发送一个请求,我们通过一个对应的处理函数来处理客户的请求
    路由=》函数
    url发起请求,通过映射的函数来处理这个请求
    // 多页面
    ajax出现的,才慢慢有了spa
    大大的提高了web应用的交互体验
    1.spa无法记住用户的操作记录,无论是刷新,还是前进后退,都没有办法展示用户真实的期望内容
    2.spa由于业务的不同它会有多重的页面展示形式,但是只有一个url,对seo不友好,不方便搜索引擎进行收录

    前端路由
    就是为了解决上述两个问题
    1.改变我们的url,并且不让我们的浏览器向我们的服务器发起请求
    2.我们必须要监听到url的变化

    前端路由中
    实现我们路由有两种机制:
    1.基于HASH
    2.history

    什么是hash
    url:http://study.163.com/#lincancan

    #lincancan 就是我们的hash值
    hash值的变化,不会导致浏览器向服务器发起请求
    hash的改变会触发
    hashchange事件
    h5的history出现之前,基本都是使用hash的模式实现路由

    history的实现
    BOM
    通过history对象
    history.go(-1) //后退一夜

    简单的实现页面跳转
    h5中,两个新的api

    改变url,不会刷新页面
    history.pushState();

    hisory.replaceState();

    具备实现前端路由的能力

    hash模式,当hash变化时候,可以通过hashchange进行监听
    而history的改变,并不会触发任何事件,所以我们暂时无法监听history

    换思路

    可以罗列出所有可能触发history改变的情况,我们把这些情况进行一个拦截,变相的去监听history的改变

    在单页的history中,url的变化:有几种方式引起
    1.点击浏览器的前进或后退,会不会引起url的变化
    2.点击a标签是不是会引起我们的url的变化
    3.js中,触发history.pushState()函数
    4.js中,触发history.replaceState()函数

  • 相关阅读:
    9
    8
    7
    lua开发和调试环境
    MeshFilter mesh vs sharedMesh
    几种方法验证unity是否为development build
    Unity SetActive Event
    利用Data Vault对数据仓库进行建模(二)
    程序员如何圆飞行梦想(一)
    利用Data vault对数据仓库建模
  • 原文地址:https://www.cnblogs.com/jcxfighting/p/11394404.html
Copyright © 2011-2022 走看看