SPA vs MPA vs PWA

2024-01-23 10:12
文章标签 vs mpa spa pwa

本文主要是介绍SPA vs MPA vs PWA,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、单页面应用程序(SPA)

① 什么是 SPA 

SPA 全称为 Single-Page Application,表示单页面应用程序

也就是说只有一个 HTML 文件的 Web 应用,我们通过 Vue 开发的项目其实就是典型的 SPA应用

在单页面应用程序中,我们不会为每个路径创建多个 HTML 文件,而是使用 JavaScript 为同一页面上的不同路径呈现不同的组件

当从浏览器请求单页面应用程序时,就会下载一个 bundle.js 文件,该文件包含所有请求网站的已编译 JavaScript 代码。使用这种方法,浏览器会通过使用 HTML5 History API 根据用户选择的路径呈现单个页面。 

如果网站使用了延迟加载,那么可能会有多有 bundle.js 文件会根据请求的路径进行下载。

因此,除了特殊情况,否则不会重新加载页面(再次从服务器请求)。如果想维护应用程序的状态,这一点是非常重要的,因为重新刷新页面就会重置应用程序的状态。 

SPA的特点:

1) SPA 应用只有一个 HTML 文件,所有的内容其实都在这个页面中呈现的;
2) SPA 应用只会加载一次HTML文件, 不会因为用户的操作而进行页面的重新加载;当用户与应用程序交互时,是通过动态更新页面内容的方式来呈现不同的内容

 

 

② SPA 的优点
  • 提高页面加载速度,从而获得更好的用户体验

它们通常只加载一次。加载后,页面渲染取决于浏览器的速度。

不会重新加载整个网页, 只是局部更新。

  • 更少的服务器负载

渲染逻辑在浏览器中执行。服务器和客户端之间只发送相关数据。

只用处理数据不用处理界面。

  • 缓存:

只向服务器发送一次请求,返回的响应会被缓存,也可以离线使用SPA。

  • 调试:

React 和 Vue 等 SPA 框架提供了调试工具,这使开发人员的开发调试更加轻松。

  • 代码可重用性:

开发人员可以重用代码,这使得开发效率更高。

  • 转场动画:

容易实现。

  • 页面间数据传递

因为在一个页面内,多以页面之间数据传递很容易

 

③ SPA 的缺点
  • 搜索引擎优化 (SEO) 较差:

搜索引擎具有可以解析 JavaScript 的爬虫,但它们很难爬取异步内容。加载初始页面后,不知道还有其他数据的爬虫将停止爬取,从而导致 SEO 效率低。

  • 内存泄漏:

事件监听器占用大量空间。使用 SPA 在客户端很容易引入内存泄漏,如果将事件侦听器添加到全局对象,而没有在卸载组件时删除它们,就会产生内存泄漏。如果不想导致内存泄漏,则需要清理事件侦听器、定时器等。

  • 安全性:

与 MPA 相比,SPA 更容易受到跨站点脚本攻击(XSS)。

2、多页面应用程序(MPA)

 ① 什么是 MPA

MPA 全称 Multi-Page Application,表示多页面应用程序。多页面应用程序由多个 HTML 文件组成,每当请求页面时就会下载这些文件。

我们在地址栏输入的每个新的 URL 或单击的每个超链接时都会向服务器发送一个新请求,并下载一个新的页面。在这种方法中,服务器完成了较为繁重的工作。

因此,如果用户的网络连接较差,每个页面可能需要很长时间才能加载出来。

② MPA 的优点
  • 搜索引擎优化(SEO)更好:

单页可以只有有限数量的关键字,但多页应用程序可以为多个页面提供相同数量的关键字,这为爬虫提供了更多关于网站的信息.

  • 良好的可扩展性:

可以持续添加功能,不断扩展。但在 SPA 中,随着不断添加功能,bundle.js 将会不断增长,因此要么减少内容,要么进行延迟加载。

  • 内存泄漏很少见:

服务器端很有可能出现内存泄漏,但客户端内存泄漏很少见,因为浏览器将为每个导航链接加载不同的脚本。

 

③ MPA 的缺点
  • 加载速度慢:

它们不断地为每个请求加载新页面(即使 UI 发生了细微的变化,页面也必须重新加载)。如果客户端的网络连接不好或服务器速度慢,加载速度就会下降,最终导致用户体验不佳。

  • 开发效率低:

代码可重用性较低,文件较大,前端与后端的耦合更紧密。这些因素会使开发效率低。

  • 增加服务器负载:

与服务器的每次交互都包含一个需要渲染的 UI 包。

  • 转场动画:

无法实现。

  • 页面间数据传递

依赖 URL、Cookie、或者 localStorage 等,实现麻烦。

3、渐进式应用程序(PWA) 

① 什么是 PWA 

PWA 全称 Progressive Web Apps,表示渐进式应用程序

渐进式应用程序可以在独立的窗口中运行,而不是在浏览器的选项卡中运行。简单的说,它们是一种 web 应用程序,类似于本地应用程序,可以安装在手机、平板电脑或者笔记本电脑上。

下载后,用户可以通过屏幕上的图标访问该应用。这种应用还可以向用户发送推送消息和通知。渐进式应用程序可以是 单页面应用(SPA)也可以是多页面应用(MPA)。

想要申请 PWA 应用,必须满足三个条件:

  1. 安全上下文 (HTTPS): 安全上下文是为用户身份验证和机密性定义的最低标准。PWA 的许多 API 和许多功能(如地理定位)只有在应用程序通过安全网络提供服务时才可用。
  2. Service Worker: Service Worker 是在后台运行并控制浏览器如何处理网络请求和内容缓存的脚本。PWA 通过服务工作者提供离线服务。
  3. 清单文件:这是一个 JSON 文件,用于保存 PWA 所需的应用程序信息,例如应用程序的名称、启动 URL、多种尺寸的图标和主题颜色。

与原生移动应用程序相比,渐进式 Web 应用程序更小。研究表明它们有助于增加流量和用户参与度,并降低跳出率,这主要归功于它的离线可用性。

 

这篇关于SPA vs MPA vs PWA的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/636068

相关文章

Windwos +vs 2022 编译openssl 1.0.2 库

一 前言 先说 结论,编译64位报错,查了一圈没找到解决方案,最后换了32位的。 使用qt访问web接口,因为是https,没有openssl库会报错 QNetworkReply* reply = qobject_cast<QNetworkReply*>(sender());if (reply){if (reply->error() == QNetworkReply::NoError

通用大模型 vs垂直大模型:AI界的“宫斗大戏”

科技圈最近可真热闹,AI大模型的“宫斗大戏”让人眼花缭乱。两个阵营:通用大模型和垂直大模型,正在上演一场激烈的“权力的游戏”。到底谁能笑到最后?咱们一起来“吃瓜”看看吧! 首先,登场的是“全能王”通用大模型。它们就像是学习成绩顶尖、体育全能的学霸,什么都懂,什么都能干。 通用大模型:全能选手看看这家伙的优势: 通用大模型就像那种考上清华北大的学霸,不管是文科还是理科,全都能拿下。从写文章到

VS Code SSH 远程连接服务器及坑点解决

背景 Linux服务器重装了一下,IP没有变化,结果VS Code再重连的时候就各种问题,导致把整个流程全部走了一遍,留个经验帖以备查看 SSH 首先确保Windows安装了ssh,通过cmd下ssh命令查看是否安装了。 没安装,跳转安装Windows下的ssh 对应的,也需要Linux安装ssh,本文是Ubuntu系统,使用以下命令安装: sudo apt updatesudo

文心一言 VS 讯飞星火 VS chatgpt (287)-- 算法导论21.2 6题

六、假设对 UNION 过程做一个简单的改动,在采用链表表示中拿掉让集合对象的 tail 指针总指向每个表的最后一个对象的要求。无论是使用还是不使用加权合并启发式策略,这个修改不应该改变 UNION 过程的渐近运行时间。(提示:而不是把一个表链接到另一个表后面,将它们拼接在一起。)如果要写代码,请用go语言。 文心一言: 在并查集(Union-Find)数据结构中,UNION 过程通常用于合并

QtCreator/VS中制作带有界面的动态库

1、首先创建动态库项目 class UNTITLED25_EXPORT Untitled25{public:Untitled25();}; 2、直接右键创建同名窗口类进行覆盖 3、引入global头文件并添加到处宏</

Visual Assist下载并安装,在vs中自动代码提示

Visual Assist小组这次1929版本的更新算是近半年以来一次比较大的更新了, 新增加了5项特性,修正了30余处bug,并且对于VS2012的支持又增加了5项,应 该是越来越稳定了。 下载的补丁包中的 VA_X.dll ,直接拷贝到安装目录中覆盖一下即可。 另外在Win7中,执行破解补丁,还有覆盖破解补丁时出现提示权限问题,或者 没有破解成功的,请自行处理自己Win7的权限设置问题

git push VS git fetch

最近我们研发团队所有项目源码的版本管理实现了统一化,全部统一采用git进行管理,丢弃svn。在使用git的过程中,遇到了git pull和git fetch两个命令,针对具体含义与区别比较模糊,进而进行了学习与总结。 要想搞清楚git pull和git fetch的区别,我们需要弄明白git的架构,它是分布式的版本管理系统。 上图展示了git的整体架构,以及和各部分相关的主要命令。先说明下其中

【Rust日报】 2019-07-16:「新手向」Rust vs C++ : 实现神经网络

timetill.rs: 专注于记录全球Rust活动的站点 #event 该站点专注于记录世界各地Rust各大活动的时间线,开源项目,大家可以提交活动信息。 timetill.rs CHIP-8模拟器的Rust移植版本 #CHIP8 该文作者是游戏开发圈的一员,最近在尝试从Cpp到Rust的迁移过程,这个CHIP-8模拟器就是他的迁移实践。本文记录了他的一些心得感想。 Read MoreCode

通用VS垂直,谁将领跑落地新纪元?

随着人工智能技术的飞速发展,大模型已成为推动各行业智能化升级的核心力量。在这个充满挑战与机遇的领域,通用大模型与垂直大模型之间的竞争正愈演愈烈。它们各自有着不同的优势,然而究竟谁能在大模型的第一个赛点拔得头筹,领跑未来智能化进程,尚未有定论。  首先,让我们了解一下通用大模型。通用大模型具备强大的泛化能力,适用于各种不同的任务和场景,如自然语言处理、图像识别、语音识别等。这种广泛的适用性使得通

vs调试asp.net网站能运行,换成ip后不行(404)

一、出现问题 在新电脑上安装了vs2017,然后新建一个webapi项目,运行没有什么问题,自动分配端口(http://localhost:59581/)。然后在控制面板中开启“internet信息服务功能”,新建网站发布程序,绑定端口(8033),用本机IP访问(http://192.168.15:8033/),运行后出现404。网上找了各种办法均不行。 二、试用方法 试用方法如下: 1