淺看spa單頁應用路由

2022-06-11 03:21:13 字數 1107 閱讀 7391

路由觀察瀏覽器的url的變更。當url 變更時,路由會解析它並生成乙個新的路由例項。

乙個基本的路由是這樣的:

class router 

public initialize() )

}//讀取url

private getroute()

//解析url

private parseroute(hash: string)

comp = hash.replace("#", '').split('/');

controller = comp[0] || this

._defaultcontroller;

action = comp[1] || this

._defaultaction;

args =;

for (i = 2; i < comp.length; i++)

return

newroute(controller, action, args);

}private onroutechange(route: route)

}

上面這個類使用預設controller和預設方法的名字作為它的建構函式的引數。當沒有引數被傳入時,home和index作為預設controller名和預設方法名。

initialize方法被用來建立hashchange事件的監聽。瀏覽器會在window.location.hash變更的時候觸發這個事件。比如,當前頁面的url是http:localhost:8080,當使用者點選了下面的鏈結點我,window.location.hash的值會變成「/task/index」。瀏覽器位址列中的位址會變更,但hash字元會阻止瀏覽器過載當前頁面。隨後路由會使用parseroute呼叫getroute方法將url轉變成乙個新的route類例項。

url遵循下面的命名規範:

#controllername/actionname/arg1/arg2/arg3/argn

這意味著task/index url 會被轉換成:

new route(「task」, 「index」, );

route類的例項被傳入onroutechange()方法中,它將負責呼叫處理這個路由的controller

單頁web應用(spa)內部路由原理

可以將路由的實現分為兩部分 1.更新url頁面不重新整理 2.監聽url的變化,執行頁面替換邏輯 兩種實現方法 1.history.pushstate,replacestate等觸發popstate事件 2.location.hash的變化觸發hashchange事件 function getuui...

單頁應用SPA 多頁應用MPA

spa單頁應用 第一次進入頁面的時候會請求乙個html檔案,重新整理清除一下。切換到其他元件,此時路徑也相應變化,但是並沒有新的html檔案請求,頁面內容也變化了。原理是 js會感知到url的變化,通過這一點,可以用js動態的將當前頁面的內容清除掉,然後將下乙個頁面的內容掛載到當前頁面上,這個時候的...

vue 單頁應用(spa)前端路由實現原理

寫在前面 通常 spa 中前端路由有2種實現方式 下面就來介紹下這兩種方式具體怎麼實現的 1.history基本介紹 window.history 物件包含瀏覽器的歷史,window.history 物件在編寫時可不使用 window 這個字首。history是實現spa前端路由是一種主流方法,它有...