定义
单页 Web 应用 (single-page application 简称为 SPA) 是一种特殊的 Web 应用。它将所有的活动局限于一个Web页面中,仅在该Web页面初始化时加载相应的HTML、JavaScript 和 CSS。一旦页面加载完成了,SPA不会因为用户的操作而进行页面的重新加载或跳转。取而代之的是利用 JavaScript 动态的变换HTML的内容,从而实现UI与用户的交互。由于避免了页面的重新加载,SPA 可以提供较为流畅的用户体验。
优点
- 良好的交互体验 前端进行的是局部的渲染,避免了不必要的跳转和重复的渲染。
- 前后端职责业分离(前端负责view,后端负责model),架构清晰 单页web应用可以和RESTful规约一起使用,通过REST API提供接口数据,并使用Ajax异步获取,这样有助于分离客户端和服务器的工作。
- 减轻服务器的压力 服务器只需要提供数据,不需要管前端的展示逻辑和页面合成,提高了 性能 SPA应用中服务器可以先将一份包含静态资源(HTML CSS JS等)的静荷数据(payload)发送给客户端,之后客户端只需要获取渲染页面或视图数据即可,
- 共用一套后端程序代码 不用修改后端程序代码就可以同时用于web界面、手机、平板灯多种客户端
缺点
- SEO(搜索引擎优化)难度高 由于所有内容都在一个页面中进行动态的替换,也就是利用hash片段实现路由,而利用hash片段不会作为HTTP请求中的一部分发送给服务器,所以在SEO上有着天然的弱势 而SPA使用哈希片段的目的是;片段内容发送变化时,浏览器不会像URL发送变化时那样发送请求,这样就可以只请求页面或渲染所需的数据,而不是每一个页面获取并解析整份文档
- 首次加载时间过长 为实现单页Web应用功能及显示效果,需要在加载页面使将js、CSS统一加载,部分页面按需加载。
- 页面复杂都提高,复杂逻辑程度成倍 由于后端只提供数据而不再管前端的展示逻辑和页面合成,所以这些展示逻辑和页面合成都需要在前端进行编写(前进、后退等),所以会大大提高页面的复杂性和逻辑的难度