单页面模式和多页面模式详解

一、含义及区别

1、单页面应用(SPA):

一个项目中只有一个完整的html主页面,其他都是html片段组成的分页面,浏览器一开始会在主页面加载所有必须的 html, js, css。撸代码的时候每个页面分开写(不管主页面还是分页面 )。在页面跳转交互的时候由路由程序将分页面动态载入主页面,跳转只是局部刷新,不会重新加载全部资源。片段之间的切换快,比较容易实现转场动画

原理:在js会感知到url的变化后动态地将当前页面的内容清除,然后将下一个页面的内容挂载到当前页面上。这个时候的路由不再是后端来做了,而是前端来做,判断页面显示相应的组件,清除不需要的。

页面跳转:使用window.location.href = "./index.html"进行页面间的跳转;

数据传递:可以使用path?account="123"&password=""路径携带数据传递的方式,或者localstorage、cookie等存储方式

2、多页面应用(MPA):

一个项目是由多个完整的html页面组成,不在有主、分页面。页面跳转是所有的资源都要重新加载,页面之间的切换会出现卡顿空白的问题,不容易实现切换动画等。这种类型的网站也就是多页网站,也叫做多页应用。

页面跳转:使用js中的append/remove或者show/hide的方式来进行页面内容的更换;

数据传递:可通过全局变量或者参数传递,进行相关数据交互

3、看图:

单页面模式和多页面模式详解

 

二、优缺点

1、单页面应用(SPA):

优点:页面切换快:

页面每次切换跳转时,并不需要做html文件的请求,这样就节约了很多http发送时延,我们在切换页面的时候速度很快。

缺点:首屏时间慢,SEO差:

单页应用的首屏时间慢,首屏时需要请求一次html,同时还要发送一次js请求,两次请求回来了,首屏才会展示出来。相对于多页应用,首屏时间慢。

SEO效果差,因为搜索引擎只认识html里的内容,不认识js的内容,而单页应用的内容都是靠js渲染生成出来的,搜索引擎不识别这部分内容,也就不会给一个好的排名,会导致单页应用做出来的网页在百度和谷歌上的排名差。

2、多页面应用(MPA):

优点:首屏时间快,搜索引擎优化效果好(SEO):

首屏时间叫做页面首个屏幕的内容展现的时间,当我们访问页面的时候,服务器返回一个html,页面就会展示出来,这个过程只经历了一个HTTP请求,所以页面展示的速度非常快

搜索引擎在做网页排名的时候,要根据网页内容才能给网页权重,来进行网页的排名。搜索引擎是可以识别html内容的,而我们每个页面所有的内容都放在Html中,所以这种多页应用,seo排名效果好。

缺点:页面切换慢:

因为每次跳转都需要发出一个http请求,如果网络比较慢,在页面之间来回跳转时,就会发现明显的卡顿。

3、两种模式对比:

页面模式 多页面模式(MPA  Multi-page Application) 单页面模式(SPA  Single-page Application)
页面的组成 多个完整页面,
例如page1.html、page2.html等
由一个初始页面和多个页面模块组成,
例如:index.html和page1.htnl.js、page2.html.js等
公共文件加载 跳转页面前后,js/css/img等公用文件重新加载 js/css/img等公用文件只在加载初始页面时加载,更换页面内容前后无需重新加载
页面跳转/内容更新 页面通过window.location.href = "./index.html"跳转 通过使用js方法,append/remove或者show/hide等方式来进行页面内容的更换
页面跳转/内容更新
所需数据的传递
可以使用路径携带数据传递的方式,例如:http://index.html?account="123"&password=123456"",或者localstorage、cookie等存储方式

直接通过参数传递,或者全局变量的方式进行,因为都是在一个页面的脚本环境下

用户体验 如果单个页面加载的文件相对较大(多),页面切换加载会很慢

页面片段间切换较快,用户体验好,因为初次已经加载好相关文件。但是初次加载页面时需要调整优化,因为加载文件较多

 适用场景  适用于高度追求高度支持搜索引擎的应用  高要求的体验度,追求界面流畅的应用
 转场动画  不容易实现  容易实现
 总结:
单页面模式:相对比较有优势,无论在用户体验还是页面切换的数据传递、页面切换动画,都可以有比较大的操作空间

多页面模式:比较适用于页面跳转较少,数据传递较少的项目中开发,否则使用cookie,localstorage进行数据传递,是一件很可怕而又不稳定的无奈选择