使用backbone的history管理SPA應用的url

本文介紹如何使用backbone的history模塊實現(xiàn)SPA應用里面的URL管理。SPA應用的核心在于使用無刷新的方式更改url,從而引發(fā)頁面內(nèi)容的改變。從實現(xiàn)上來看,url的管理和頁面內(nèi)容的管理是其中的兩個難點。就url的管理而言,主要有以下三方面的要求:

1)對于要采用單頁跳轉(zhuǎn)的鏈接,不能有頁面刷新; 
2)瀏覽器的前進和后退,都能像多頁應用那樣,顯示之前訪問地址對應的內(nèi)容; 
3)應用處于任何一個單頁鏈接地址時,當用戶刷新,依然能初始化顯示該地址對應的內(nèi)容。

假如要自己來實現(xiàn)一個能夠滿足以上三方面要求的功能,思路有2種。

第一種是利用錨點鏈接及hashchange,將所有單頁鏈接地址全部配置成錨點鏈接的形式,然后在hashchange事件里面,根據(jù)頁面當前的錨點值,執(zhí)行不同的回調(diào)函數(shù),用于更改頁面內(nèi)容。這個思路在上一篇博客中《理解瀏覽器歷史記錄(2)-hashchange、pushState》給出了一個簡單的實現(xiàn)(demo),代碼雖然比較簡陋,但是也說明思路是可行的。

第二種是利用pushState,詳細步驟如下:

1)在點擊鏈接的時候,如果這個鏈接是單頁形式的鏈接,可通過pushState或者replaceState的方式來改變url;由于pushState跟replaceState并不會觸發(fā)popstate事件,所以在必要的條件下,還得在調(diào)用完pushState和replaceState調(diào)用完后,手動調(diào)用相應的回調(diào)函數(shù); 
2)監(jiān)聽瀏覽器的popstate事件,這樣就能響應瀏覽器前進后退的操作,然后根據(jù)操作后的頁面地址找到對應的回調(diào)函數(shù)執(zhí)行; 
3)頁面初始化時,直接根據(jù)當前地址執(zhí)行對應的回調(diào)函數(shù)即可。

上次也沒有給出簡單使用pushState實現(xiàn)SPA的例子,這次補上,功能與hashchange那個類似,就是寫法稍微有點不同而已。demo地址(不可測刷新操作,如果使用pushState,單頁地址刷新會報404,需在后臺處理才能解決,此處畢竟只是個靜態(tài)頁):

http://liuyunzhuge.github.io/blog/pushState/demo7.html

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式