spa意义及原理

spa的意义及原理

  1. 设计意义

    a、 前后端分离

    b、减轻服务器压力

    c、增强用户体验

    d、Prerender预渲染优化SEO

  2. 工作原理

    • History API 优雅

    图片3.png

    1. pushState

      history.pushState(**stateObject**, title, url);
      

      history.pushState()主要是在不刷新浏览器的情况下,创建新的浏览记录并插入浏览记录队列中。

      1. 状态对象(stateObject)–stateObject是一个JavaScript对象,通过pushState方法可以将stateObject内容传递到新页面中。

      2. 标题(title)–几乎没有浏览器支持该参数,但是传一个空字符串会比较安全。

      3. 地址(url)–新的历史记录条目的地址(可选,不指定的话则为文档当前URL);浏览器在调用pushState()方法后不会加载该地址;传入的URL与当前URL应该是同源的,否则,pushState()会抛出异常。

    2. onpopstate事件

      window.onpopstate = function(event) {
        alert("location: " + document.location + ", state: " + JSON.stringify(event.state));
      };
      

      onpopstate事件,点击后退按钮(或者在JavaScript中调用history.back()方法)时触发;

    • Hash 不优雅、兼容性好

    QQ截图20191125215516.png

    ​ 1. #含义

    ​ #代表网页中的一个位置。右面的自负就是代表的位置信息:如:

    http://localhost:8080/cbuild/index.html#one

    ​ 2. window.location.hash读取#值

    ​ window.location.hash这个属性可读可写。读取时,可以用来判断网页状态是否改变;写入时,则会在不重载网页的前提下,创造一条访问历史记录。

    ​ 3. onhashchange事件

    ​ 这是一个HTML5新增的事件,当#值发生变化时,就会触发这个事件。 使用方法如下:
    window.onhashchange = func;

    <body onhashchange="func();">

    window.addEventListener("hashchange",func, false);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值