原文:https://www.jianshu.com/p/a02eb15d2d70

单页面应用

第一次进入页面时会请求一个html文件,刷新清除一下,切换到其他组件,此时路径也相应变化,但是并没有新的html文件请求,页面内容却变化了。

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

页面跳转: js渲染
优点: 页面切换快
缺点: 首屏时间稍慢,SEO差

1. 为什么页面切换快?

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

2. 为什么首屏时间慢,SEO 差?

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

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

3. 为什么还要用 Vue 呢?

Vue官方提供了一些其他的技术来解决这些缺点,比如服务端渲染技术(SSR),通过这些技术可以完美解决这些缺点,这样一来单页面应用对于前端来说就是非常完美的页面开发解决方案了。


多页面应用

每一次页面跳转的时候,后台服务器都会返回一个新的html文档,这种类型的网站也就是多页网站,也叫多页应用。

页面跳转: 返回HTML
优点: 首屏时间快,SEO效果好
缺点: 页面切换慢

1. 为什么多页应用的首屏时间快?

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

2. 为什么搜索引擎优化效果好(SEO)?

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

3. 缺点:切换慢

每次跳转都需要发送一个HTTP请求,如果网络状态不好,在页面间来回跳转时,就会发生明显的卡顿,影响用户体验。


总结

/ 多页面应用模式MPA 单页面应用模式SPA
应用构成 由多个完整页面构成 一个外壳页面和多个页面片段构成
跳转方式 页面之间的跳转是从一个页面到另一个页面 一个页面片段删除或隐藏,加载另一个页面片段并显示。片段间的模拟跳转,没有开壳页面
跳转后公共资源是否重新加载
URL模式 http://xxx/page1.htmlhttp://xxx/page2.html http://xxx/shell.html#page1http://xxx/shell.html#page2
用户体验 页面间切换加载慢,不流畅,用户体验差,尤其在移动端 页面片段间切换快,用户体验好,包括移动设备
能否实现转场动画 容易实现(手机APP动效)
页面间传递数据 依赖URLcookie或者localstorage,实现麻烦 页面传递数据容易(VuexVue中的父子组件通讯props对象)
搜索引擎优化(SEO) 可以直接做 需要单独方案(SSR)
特别适用的范围 需要对搜索引擎友好的网站 对体验要求高,特别是移动应用
开发难度 较低,框架选择容易 较高,需要专门的框架来降低这种模式的开发难度

SPA单页面应用和MPA多页面应用(转)的更多相关文章

  1. 快速了解SPA单页面应用

    简要 SPA单页网页应用程序这个概念并不算新,早在2003年就已经有在讨论这个概念了,不过,单页应用这个词是到了2005年才有人提出使用,SPA的概念就和它的名字一样显而易懂,就是整个网站不再像传统的 ...

  2. Java快速开发平台强大的代码生成器,JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布

    JEECG 3.7.5 VUE+ElementUI SPA单页面应用版本发布 此版本为Vue+ElementUI SPA单页面应用版本,提供新一代风格代码生成器模板,采用Vue技术,提供两套精美模板E ...

  3. AngularJs(SPA)单页面SEO以及百度统计应用(上)

    只有两种人最具有吸引力,一种是无所不知的人,一种是一无所知的人 问:学生问追一个女孩总是追不上怎么办?回答:女孩不是追来的,是吸引来的,你追的过程是吸引女孩的过程,如果女孩没有看上你,再追都是没有用的 ...

  4. SPA(单页面web应用程序)

    单页web应用(single page web application,SPA),就是只有一张web页面的应用,是加载单个HTML页面并在用户与应用程序交互时动态更新该页面的web应用程序. 浏览器一 ...

  5. 通过Blazor使用C#开发SPA单页面应用程序(3)

    今天我们来看看Blazor开发的一些基本知识. 一.Blazor组件结构 Blazor中组件的基本结构可以分为3个部分,如下所示: //Counter.razor //Directives secti ...

  6. SPA 单页面应用

    SPA一般只一个web页面,通过ajax,router等技术实现局部刷新,不会随着用户操作而出现重新加载页面或者页面跳转的功能,所有的用户操作都在一个页面实现. 组件化:UI组件和非UI组件 传统的u ...

  7. SPA单页面应用

    什么是单页应用 单页Web应用,就是只有一张Web页面的应用.浏览器一开始会加载必需的HTML.CSS和JavaScript,之后所有的操作都在这张页面完成,这一切都由JavaScript来控制.因此 ...

  8. asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)

    原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.as ...

  9. JavaScript 小实例 - 表单输入内容检测,对页面的增删改

    JavaScript 小实例 - 表单输入内容检测,对页面的增删改 效果体验地址:https://xpwi.github.io/js/JavaScript01/jsForm.html 功能: 1.向页 ...

随机推荐

  1. 8. Android加载流程(打包与启动)

    移动安全的学习离不开对Android加载流程的分析,包括Android虚拟机,Android打包,启动流程等... 这篇文章  就对Android的一些基本加载进行学习. Android虚拟机 And ...

  2. 基于wince系统开发的 SQLServe Mobile数据库应用

    SQLServe Mobile数据库以前的版本是SQLServe CE,现在最新的是3.5的版本,最近用vs2008做了一个小程序,是对SQLServe Mobile数据库读写数据. 注:SQLSer ...

  3. 安装Docker报container-selinux >= 2.9错

    Docker装了无数次,还是会遇到如此熟悉的问题,知道他是版本需要更新,但是就是找不到对应的,在网上找了差不多一个下午都没弄好.发现平时还是要多动脑子才行,既然知道是版本需要更新,那么到官网直接找版本 ...

  4. java基本类型的长度

    bit:位,一个二进制数据(0或者1),是1bit byte:字节,存储空间的基本单位,1byte=8bit 一个英文占一个字节,1字母=1byte=8bit 一个中文占两个字节,1汉字=2byte= ...

  5. DF1协议常用命令

    PCCC:Programmable Controller Communication Commands. AB PLC常用指令 根据http://www.iatips.com/pccc_tips.ht ...

  6. Linux进程管理之ps

    Linux 是一种动态系统,能够适应不断变化的计算需求.下面介绍一些 Linux 所提供的工具来进行进程的查看与控制,掌握这些让我们能在某些进程出现异常的时候及时查看相关的指标,从而解决问题. 进程管 ...

  7. The 2019 Asia Nanchang First Round Online Programming Contest B. Fire-Fighting Hero

    题目链接:https://nanti.jisuanke.com/t/41349 题意:有一个灭火英雄,和一个灭火团队,一个人与一个团队比较. 灭火英雄到其他灭火点的最短路最大值,与一个团队到其他灭火点 ...

  8. Leetcode——1. 两数之和

    难度: 简单 题目 Given an array of integers, return indices of the two numbers such that they add up to a s ...

  9. PHP的SOLID设计原则

    SOLID Design Principles, 这是一个比设计模式更高级别的概念, 以构建良好代码为目标,真正掌握了就是大师级别了. 我~~~仅知晓~ /*SOLID Design Principl ...

  10. flask实战-个人博客-表单

    表单 下面我们来编写所有表单类,personalBlog中主要包含下面这些表单: 登录表单: 文章表单: 评论表单: 博客设置表单: 这里仅介绍登录表单.文章表单.分类表单和评论表单,其他的表单在实现 ...