如何让网页APP化 渐进式Web应用(PWA)

前言

大家上网应该发现有的网页说可以安装对应应用,结果这个应用好像就是个web,不像是应用,因为这里采用了PWA相关技术。

PWA,全称为渐进式Web应用(Progressive Web Apps),是一种可以提供类似于原生应用体验的网页应用。PWA可以在不安装任何额外软件的情况下,通过浏览器运行在多种设备上,包括桌面、手机和平板。

参考来源

MDN Web Docs

MDN Web Docs (mozilla.org)

优秀特点

用户易于访问:它们在设备上有自己的图标,使用户容易找到和打开它们

离线和后台操作:它们能够在用户没有与之交互和设备离线时运行。这使得例如聊天应用可以在没有打开时接收消息,并向用户显示通知。它还使得新闻应用可以在后台更新,以便即使设备离线也可以显示新鲜的内容

离线工作:通过服务工作线程(Service Workers)缓存应用的外壳和数据,可以实现离线或网络不稳定时的访问

类似应用体验:通过应用清单(App Manifest)和全屏等功能,PWA能够提供类似原生应用的体验

安全:通过HTTPS提供服务,确保应用的安全性

可发现性:作为网页应用,PWA可以通过搜索引擎被发现,这提高了其可见性


需要注意的是

从技术上讲,它们仍然是网站

大致实施流程

编写Web应用,然后通过实现Service Workers、添加Web App Manifest和采用响应式设计等步骤,将其转化为PWA。

关键技术

服务工作线程(Service Workers)

概念

服务工作线程是一种在浏览器背景下独立于网页运行的脚本,它可以拦截和处理网络请求,包括可编程的响应缓存管理。它允许开发者控制网页或网站如何响应资源请求,实现离线体验、消息推送和背景同步等功能。

实现原理
  • 安装与激活:服务工作线程的生命周期包括安装和激活两个阶段。在安装阶段,通常会缓存应用的静态资源。激活阶段通常用于更新资源和清理旧缓存。
  • 请求拦截:当浏览器请求一个资源时,服务工作线程可以拦截这个请求,并决定如何响应。它可以查询缓存中是否有可用的资源副本,如果有,则直接从缓存返回,否则向服务器发起请求。
  • 缓存管理:服务工作线程通过 Cache API 管理资源的缓存,可以在安装阶段预缓存关键资源,也可以在运行时动态缓存其他资源。

应用清单(Web App Manifest)

概念

Web App Manifest是一个JSON格式的文件,提供了有关网页应用的信息,如应用名称、图标、启动画面颜色和访问起始URL等。它使得网页应用可以被“安装”到设备的主屏幕上,提供类似原生应用的启动体验。

实现原理
  • 定义应用信息:通过创建一个manifest.json文件,并在其中定义应用的名称、图标、颜色和其他属性,可以控制安装到主屏幕的应用的外观和行为。
  • 关联到网页:在网页的<head>部分通过<link rel="manifest" href="/path/to/manifest.json">标签引用该manifest.json文件,使浏览器识别该网页应用的安装配置。
  • 安装提示:浏览器会根据manifest中的信息,自动提示用户将网页应用添加到主屏幕,或者开发者可以使用Web API来自定义安装流程。

应用壳架构(App Shell Architecture)

概念

应用壳架构是构建PWA的一种方法,旨在提高应用的加载性能和提供离线体验。它通过将应用的核心UI结构(即“壳”)与动态内容分离,实现快速加载和动态数据填充。

实现原理
  • 静态壳缓存:在服务工作线程中缓存应用的“壳”(基本HTML、CSS、JavaScript),确保即使在离线状态下,应用也能加载其基本UI。
  • 动态内容加载:应用启动后,通过JavaScript动态地从网络或缓存中获取内容数据,并填充到应用壳中。这样可以确保用户即使在网络条件不佳的情况下也能快速获得基本的应用结构,然后再逐步加载内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/496177.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx重写功能和反向代理

目录 一、重写功能rewrite 1. ngx_http_rewrite_module模块指令 1.1 if 指令 1.2 return 指令 1.3 set 指令 1.4 break 指令 2. rewrite 指令 3. 防盗链 3.1 实现盗链 3.2 实现防盗链 4. 实用网址 二、反向代理 1. 概述 2. 相关概念 3. 反向代理模块 4. 参数配…

读《Shape-Guided: Shape-Guided Dual-Memory Learning for 3D Anomaly Detection》

Chu Y M, Chieh L, Hsieh T I, et al. Shape-Guided Dual-Memory Learning for 3D Anomaly Detection[J]. 2023.&#xff08;为毛paperwithcode上面曾经的榜一引用却只有1&#xff09; 摘要 专家学习 无监督 第一个专家&#xff1a;局部几何&#xff0c;距离建模 第二个专家&…

Spring篇----第十二篇

系列文章目录 文章目录 系列文章目录前言一、指出在 spring aop 中 concern 和 crosscuttingconcern 的不同之处二、AOP 有哪些实现方式?三、Spring AOP and AspectJ AOP 有什么区别?四、如何理解 Spring 中的代理?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,…

STC-ISP原厂代码研究之 V3.7d汇编版本

最近在研究STC的ISP程序,用来做一个上位机烧录软件,逆向了上位机软件,有些地方始终没看明白,因此尝试读取它的ISP代码,但是没有读取成功。应该是目前的芯片架构已经将引导代码放入在了单独的存储块中,而这存储块有硬件级的使能线,在面包板社区-宏晶STC单片机的ISP的BIN文…

基于视觉识别的自动采摘机器人设计与实现

一、前言 1.1 项目介绍 【1】项目功能介绍 随着科技的进步和农业现代化的发展&#xff0c;农业生产效率与质量的提升成为重要的研究对象。其中&#xff0c;果蔬采摘环节在很大程度上影响着整个产业链的效益。传统的手工采摘方式不仅劳动强度大、效率低下&#xff0c;而且在劳…

李沐动手学习深度学习——3.1练习

字写的有点丑不要介意 由于公式推导烦的要死&#xff0c;所以手写形式&#xff0c;欢迎进行讨论&#xff0c;因为我也不知道对错

【Vue渗透】Vue站点渗透思路

原文地址 极核GetShell 前言 本文经验适用于前端用Webpack打包的Vue站点&#xff0c;阅读完本文&#xff0c;可以识别出Webpack打包的Vue站点&#xff0c;同时可以发现该Vue站点的路由。 成果而言&#xff1a;可能可以发现未授权访问。 识别Vue 识别出Webpack打包的Vue站…

BevFusion (2): nuScenes 数据介绍及点云可视化

1. nuScenes 数据集 1.1 概述 nuScenes 数据集 (pronounced /nu:ːsiː:nz/) 是由 Motional (以前称为 nuTonomy) 团队开发的自动驾驶公共大型数据集。nuScenes 数据集的灵感来自于开创性的 KITTI 数据集。 nuScenes 是第一个提供自动驾驶车辆整个传感器套件 (6 个摄像头、1 …

网络安全之内容安全

内容安全 攻击可能只是一个点&#xff0c;防御需要全方面进行 IAE引擎 DFI和DPI技术--- 深度检测技术 DPI --- 深度包检测技术--- 主要针对完整的数据包&#xff08;数据包分片&#xff0c;分段需要重组&#xff09;&#xff0c;之后对 数据包的内容进行识别。&#xff08;应用…

使用 Debezium 和 RisingWave 对 MongoDB 进行持续分析

MongoDB 和流式 Join 的挑战 谷歌趋势显示&#xff0c;有关 MongoDB 流式计算的搜索率不断上升 作为一种操作型数据库&#xff0c;MongoDB 在提供快速数据操作和查询性能方面表现十分出色。然而&#xff0c;在维护实时视图或执行流处理任务的内置支持方面&#xff0c;它确实存…

spring-boot static-path-pattern如何配置生效

WebMvcAutoConfiguration AbstractUrlHandlerMapping ResourceHttpRequestHandler springboot 版本 2.3.9.RELEASE 一、如何用 yaml配置 spring:mvc:static-path-pattern: /doctest/**resources:static-locations: classpath:/doc/资源文件配置 访问路径 二、原理 第一个问…

海量物理刚体 高性能物理引擎Unity Physics和Havok Physics的简单性能对比

之前的博客中我们为了绕过ECS架构&#xff0c;相当于单独用Batch Renderer Group实现了一个精简版的Entities Graphics&#xff0c;又使用Jobs版RVO2实现了10w人同屏避障移动。 万人同屏对抗割草 性能测试 PC 手机端 性能表现 弹幕游戏 海量单位同屏渲染 锁敌 避障 非ECS 那么有…