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);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章