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

本文介绍如何使用backbone的history模块实现SPA应用里面的URL管理。SPA应用的核心在于使用无刷新的方式更改url,从而引发页面内容的改变。从实现上来看,url的管理和页面内容的管理是其中的两个难点。就url的管理而言,主要有以下三方面的要求:

1)对于要采用单页跳转的链接,不能有页面刷新; 
2)浏览器的前进和后退,都能像多页应用那样,显示之前访问地址对应的内容; 
3)应用处于任何一个单页链接地址时,当用户刷新,依然能初始化显示该地址对应的内容。

假如要自己来实现一个能够满足以上三方面要求的功能,思路有2种。

第一种是利用锚点链接及hashchange,将所有单页链接地址全部配置成锚点链接的形式,然后在hashchange事件里面,根据页面当前的锚点值,执行不同的回调函数,用于更改页面内容。这个思路在上一篇博客中《理解浏览器历史记录(2)-hashchange、pushState》给出了一个简单的实现(demo),代码虽然比较简陋,但是也说明思路是可行的。

第二种是利用pushState,详细步骤如下:

1)在点击链接的时候,如果这个链接是单页形式的链接,可通过pushState或者replaceState的方式来改变url;由于pushState跟replaceState并不会触发popstate事件,所以在必要的条件下,还得在调用完pushState和replaceState调用完后,手动调用相应的回调函数; 
2)监听浏览器的popstate事件,这样就能响应浏览器前进后退的操作,然后根据操作后的页面地址找到对应的回调函数执行; 
3)页面初始化时,直接根据当前地址执行对应的回调函数即可。

上次也没有给出简单使用pushState实现SPA的例子,这次补上,功能与hashchange那个类似,就是写法稍微有点不同而已。demo地址(不可测刷新操作,如果使用pushState,单页地址刷新会报404,需在后台处理才能解决,此处毕竟只是个静态页):

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

延伸阅读

学习是年轻人改变自己的最好方式-Java培训,做最负责任的教育,学习改变命运,软件学习,再就业,大学生如何就业,帮大学生找到好工作,lphotoshop培训,电脑培训,电脑维修培训,移动软件开发培训,网站设计培训,网站建设培训学习是年轻人改变自己的最好方式