如何选择使用SPA还是MPA
如何选择使用SPA还是MPA
SPA :Single-Page Application,单一页面应用
MPA:Multiple-Page Application,多页面应用
基于内容优先原则(content first)来思考这个问题,内容是用户决定是否使用应用的原因,因此需要回答两个问题
- 你想展示怎样的内容给用户
- 用户最希望看到怎样的内容
Single-Page Application
单一页面程序在浏览器中运行,在使用期间不需要用户刷新和重新加载资源。Gmail
,Google Maps
,Facebook
,Github
等都是这种架构的应用。使用SPA架构的应用程序致力于优秀的用户体验,因为这种架构不需要刷新,不需要等待,用户似乎在使用本地程序一般自然,它仅仅是一个网页,通过Javascript
加载了所有的内容
优点
- 快速,在应用程序生命周期内,所有的资源只需要加载一次,后续仅存在一些与服务器的api请求。
- 开发更容易,不需要服务端路由来处理,所以很容易开始,甚至可以通过本地打开html的方式使用我们的应用程序。
- 更容易使用Chrome进行调试
- 更容易制作手机应用程序,因为可以重用大量的代码
- 更高效的使用缓存,一次加载全部的资源,甚至可以离线使用
缺点
- 很难做SEO优化,这曾经是个难点,但是目前可以使用服务端渲染来处理这个问题。
- 首次加载缓慢,因为首次加载时需要加载全部的资源。
- 相比较传统网页应用,更容易被跨站脚本攻击
Javascript
的内存弱点有可能使高配电脑也变得卡顿
Multiple-Page Application
多页面程序是我们所知道多更传统的方式,每次请求都会返回一部分页面用于展示,一般有更多的层次,也更为复杂。因为Ajax
技术的存在,我们可以局部刷新,一定程度上降低了网络负载,但是相对SPA结构的应用,在开发上会更复杂一些。
优点
- 对用户来讲,更明确的功能指引,以及更少深度的层次结构
- 非常利于SEO
缺点
- 前后端开发关联紧密。
- 开发更复杂,开发者需要同时在前后端展开工作,将导致更长的开发周期。
使用SPA还是MPA
如果你有风格迥异的内容以及复杂的分类,那建议使用MPA。
如果的内容拥有一致的体验,那建议使用SPA。
另外一种方式拥有两者的优点和更少的缺点,考虑Hybird site