单页Web应用(single-page application 简称为SPA)是一种特殊的Web应用。它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript和CSS。一旦页面加载完成了,SPA不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用JavaScript动态的变换HTML的内容,从而实现UI与用户的交互。由于避免了页面的重新加载,SPA可以提供较为流畅的用户体验。得益于ajax,我们可以实现无跳转刷新,又多亏了浏览器的histroy机制,我们用hash的变化从而可以实现推动界面变化。从而模拟元素客户端的单页面切换效果:
SPA被人追捧是有道理的,但是它也有不足之处。当然任何东西都有两面性,以下是它的一些优缺点总结:
(1)优点:
1.无刷新界面,给用户体验原生的应用感觉
2.节省原生(android和ios)app开发成本
3.提高发布效率,无需每次安装更新包。这个对于ios开发人员来说印象尤其深吧
4.容易借助其他知名平台更有利于营销和推广
5.符合web2.0的趋势
(2)缺点:
1.效果和性能确实和原生的有较大差距
2.各个浏览器的版本兼容性不一样
3.业务随着代码量增加而增加,不利于首屏优化
4.某些平台对hash有偏见,有些甚至不支持pushstate
5.不利于搜索引擎抓取
当然,有单页面应用就有多页面应用
多页应用:与单页应用相对应的,不同的功能通过不同的页面来实现。
以下是总结的一些单页面与多页面的对比: