定义
一种网络应用程序或者说网站的模型,通过动态的重新渲染当前的页面来实现与用户的交互,所有需要的代码都通过单个页面的加载来检索,也可以根据需要动态的加载资源到页面。
对比:
SPA单页面应用只有一个主页面,只加载一次资源,所有的页面都在主页面里,对每一个功能进行模块化。在跳转的时候仅仅是切换组件,刷新局部资源。
MPA多页面应用是有多个独立页面,每个页面都必须加载一次资源,在进行应用跳转的时候需要整页资源的刷新。
区别:
对比项 | SPA | MPA |
---|---|---|
结构 | 一个主页面+许多模块的组件 | 许多完整的页面 |
体验 | 页面切换快,体验佳;当初次加载文件过多时,需要做相关的调优 | 页面切换慢,网速慢的时候,体验尤其不好 |
资源文件 | 组件公用的资源只需要加载一次 | 每个页面都要自己加载公用的资源 |
适用场景 | 对体验度和流畅度有较高要求的应用,不利于SEO (可借助SSR优化SEO) | 适用于对SEO要求较高的应用 |
过渡动画 | vue提供了transition的封装组件,容易实现 | 很难实现 |
内容更新 | 相关组件的切换,即局部更新 | 整体HTML的切换,费钱(重复HTTP请求) |
路由模式 | 可以使用hash ,也可以使用history | 普通链接跳转 |
数据传递 | 因为单页面,使用全局变量就好(Vuex) | cookie . localStorage 等缓存方案,URL参数,调用接口保存等 |
相关成本 | 前期开发成本较高,后期维护较为容易 | 前期开发成本低,后期维护就比较麻烦,因为可能一个功能需要改很多地方 |