认识单页应用(SPA)和多页应用(MPA)
MPA(多页应用)
每次页面跳转,后台服务器都会返回一个新的 html 文档,这种类型的网站就是多页网站,也叫多页应用。
多页应用的优点
- 首屏时间快
首屏时间,即页面首个屏幕的内容展现时间。当访问页面时,服务器返回一个 html,页面就会展示出来,这个过程只经历了一个 HTTP 请求,所以页面展示速度非常快。
- 搜索引擎优化效果好(SEO)
搜索引擎在做网页排名时,根据网页内容给网页权重,来进行网页的排名。MPA 的内容都放在 html 中,容易被搜索引擎识别到,seo 排名效果好。
多页应用缺点
- 切换慢
每次跳转页面都需要发出一个 http 请求,在页面之间来回跳转,容易产生卡顿。
SPA(单页应用)
首次进入页面时请求一个 html 文件,之后在单个 html 文件里通过 js 做文章。切换到其他组件时,路径发生变化,JS 会感知 url 的变化,动态的清除页面内容,挂载下个页面内容。
单页应用的优点
- 页面切换慢
每次切换页面,不需要做 html 页面的请求,节约了很多 http 刚发送的时延。
单页面应用的缺点
- 首屏时间慢
首屏时需要请求一次html,同时还要发送一次js请求,两次请求回来了,首屏才会展示出来。
- SEO 效果差
搜索引擎只认识 html 里的内容,spa 页面内容是通过 js 渲染生成的,不能被搜索引擎识别。
虽然 SPA 也存在许多缺点,但可以通过某些技术完美解决这些问题,比如 Vue 提供了服务端渲染技术(SSR)。解决完这些问题,实际上单页面应用对于前端来说已经是非常完美的页面开发解决方案了。
表格对比
| 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,实现,实现麻烦 | 因为在一个页面内,页面间传递数据很容易实现 |
| 搜索引擎优化(SEO) | 可以直接做 | 需要单独方案做,有点麻烦 |
| 特别适用的范围 | 需要对搜索引擎友好的网站 | 对体验要求高的应用,特别是移动应用 |
| 开发难度 | 低一些,框架选择容易 | 高一些,需要专门的框架来降低这种模式的开发难度 |