单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。
单页面应用的优缺点:
优点:
1、用户操作体验好,用户不用刷新页面,整个交互过程都是通过Ajax来操作。
2、适合前后端分离开发,服务端提供http接口,前端请求http接口获取数据,使用JS进行客户端渲染。
缺点:
1、首页加载慢
单页面应用会将js、 css打包成一个文件,在加载页面显示的时候加载打包文件,如果打包文件较大或者网速慢则用户体验不好
2、SEO不友好
SEO(Search Engine Optimization)为搜索引擎优化。它是一种利用搜索引擎的搜索规则来提高网站在搜索引擎排名的方法。目前各家搜索引擎对JS支持不好,所以使用单页面应用将大大减少搜索引擎对网站的收录。
为什么页面切换快?
页面每次切换跳转时,并不需要做html
文件的请求,这样就节约了很多http
发送时延,我们在切换页面的时候速度很快。
缺点:首屏时间慢,SEO差
单页应用的首屏时间慢,首屏时需要请求一次html
,同时还要发送一次js
请求,两次请求回来了,首屏才会展示出来。相对于多页应用,首屏时间慢。
SEO效果差,因为搜索引擎只认识html
里的内容,不认识js
的内容,而单页应用的内容都是靠js
渲染生成出来的,搜索引擎不识别这部分内容,也就不会给一个好的排名,会导致单页应用做出来的网页在百度和谷歌上的排名差。
mm
多页应用模式MPA
单页应用模式SPA
应用构成
由多个完整页面构成
一个外壳页面和多个页面片段构成
跳转方式
页面之间的跳转是从一个页面跳转到另一个页面
页面片段之间的跳转是把一个页面片段删除或隐藏,加载另一个页面片段并显示出来。这是片段之间的模拟跳转,并没有开壳页面
跳转后公共资源是否重新加载
是
否
URL模式
http://xxx/page1.html 和 http://xxx/page2.html
http://xxx/shell.html#page1 和 http://xxx/shell.html#page2
用户体验
页面间切换加载慢,不流畅,用户体验差,特别是在移动设备上
页面片段间的切换快,用户体验好,包括在移动设备上
能否实现转场动画
无法实现
容易实现(手机app
动效)
页面间传递数据
依赖URL、cookie
或者localstorage
,实现麻烦
因为在一个页面内,页面间传递数据很容易实现(这里是我补充,父子之间传值,或vuex
或storage
之类)
搜索引擎优化(SEO)
可以直接做
需要单独方案做,有点麻烦
特别适用的范围
需要对搜索引擎友好的网站
对体验要求高的应用,特别是移动应用
搜索引擎优化(SEO)
可以直接做
需要单独方案做,有点麻烦
开发难度
低一些,框架选择容易
高一些,需要专门的框架来降低这种模式的开发难度