spa全称:single-page application(单页应用)
是一种特殊的Web应用。它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript、CSS。一旦页面加载完成,SPA不会因为用户的操作而进行页面的重新加载或跳转,而是利用JavaScript动态的变换HTML,从而实现UI与用户的交互。
最显著的特点:正常情况下,我们会在一个页面中链接到其他的很多个页面,进行页面的跳转,但是如果使用单页面应用的话,我们始终在一个页面中。
由于避免了页面的重新加载,SPA 可以提供较为流畅的用户体验。
得益于ajax,我们可以实现无跳转刷新
又多亏了浏览器的histroy机制,我们用hash的变化从而可以实现推动界面变化。
要实现spa,最关键的便是处理#后面的字符,也就是大家常说的URL的锚。
首先得了解一个对象:Location
了解了Location 对象之后,我们可以知道,#后面的字符,其实location对象的hash属性的值,即是说,我们可以轻松拿到这个#后面字符的变化值,代码如下:
let hash = document.location.hash;
然而仅仅能够获取hash属性,是无法实现spa的,我们还需要能够改变hash值。我们可以直接使用a标签跳转:
<a href="#xiaoming">小明</a>
<a href="#xiaofang">小芳</a>
<a href="#xiaodong">小冬</a>
<a href="#xiaowang">小王</a>
到这里,我们还需要一个能监听hash值变化的事件:hashchange
见名知意,通过hashchange事件,我们可以监视#后面字符,一旦发生改变,就会触发此事件。
搞清楚实现方法之后,我们就可以开始写代码了。
html:
css:
js:
json实例:
实现结果:
这只是一个小demo,实际上,现在主流的很多框架特别适合用于开发spa页面,如angularJS,vueJs,React,backbone,extjs等。