1、定义
单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用。它将全部的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript 和 CSS。一旦页面加载完成了,SPA不会由于用户的操做而进行页面的从新加载或跳转。取而代之的是利用 JavaScript 动态的变换HTML的内容,从而实现UI与用户的交互。因为避免了页面的从新加载,SPA 能够提供较为流畅的用户体验。后端
2、优缺点浏览器
单页Web程序的出现是富客户端发展的必然结果,可是该技术也是有些局限性,因此采用以前须要了解清楚它的优缺点。服务器
一、优势:app
1).良好的交互体验框架
用户不须要从新刷新页面,获取数据也是经过Ajax异步获取,页面显示流畅。异步
2).良好的先后端工做分离模式搜索引擎
单页Web应用能够和RESTful规约一块儿使用,经过REST API提供接口数据,并使用Ajax异步获取,这样有助于分离客户端和服务器端工做。更进一步,能够在客户端也能够分解为静态页面和页面交互两个部分。索引
3).减轻服务器压力接口
服务器只用出数据就能够,不用管展现逻辑和页面合成,吞吐能力会提升几倍;游戏
4).共用一套后端程序代码
不用修改后端程序代码就能够同时用于Web界面、手机、平板等多种客户端;
二、缺点:
1).SEO难度较高
因为全部的内容都在一个页面中动态替换显示,因此在SEO上其有着自然的弱势,因此若是你的站点对SEO很看重,且要用单页应用,那么就作些静态页面给搜索引擎用吧。
2).前进、后退管理
因为单页Web应用在一个页面中显示全部的内容,因此不能使用浏览器的前进后退功能,全部的页面切换须要本身创建堆栈管理,固然此问题也有解决方案,好比利用URI中的散列+iframe实现。
3).初次加载耗时多
为实现单页Web应用功能及显示效果,须要在加载页面的时候将JavaScript、CSS统一加载,部分页面能够在须要的时候加载。因此必须对JavaScript及CSS代码进行合并压缩处理,若是使用第三方库,建议使用一些大公司的CDN,所以带宽的消耗是必然的。
3、框架AngularJS
AngularJS是一个 MV* 框架,最适于开发客户端的单页面应用。它不是个功能库,而是用来开发动态网页的框架。它专一于扩展HTML的功能,提供动态数据绑定(data binding),并且它能跟其它框架(如jQuery)合做融洽。
若是你要开发的是单页应用,AngularJS就是你的上上之选。Gmail、Google Docs、Twitter和Facebook这样的应用,都很能发挥AngularJS的长处。可是像游戏开发之类对DOM进行大量操纵、又或者单纯须要极高运行速度的应用,就不是AngularJS的用武之地了。