PWA(Progressive web apps):Web技术实现类似原生应用 - 入门
创始人
2025-05-29 21:36:37

PWA(Progressive web apps):Web技术实现类似原生应用 - 入门简介

前言

在(使用Google浏览器)访问一些网站时,有时右上角会弹出“安装应用”的按钮。

安装应用

例如谷歌V8官网

V8官网

如果我们点击“安装”,则会在桌面生成一个“快捷方式”,并且当前页面也会弹出为独立的窗口。

独立窗口

我们双击桌面的快捷方式也能达到同样的效果。

快捷方式

这就像是我们打开了一个安装在本地的程序一样,并且能在“设置->应用和功能”中找到(Win10下可以Win + Rms-settings:appsfeatures回车

应用和功能

查看快捷方式的属性,可以发现其实质上是指向了chrome_proxy.exe,其目标为"C:\Program Files\Google\Chrome\Application\chrome_proxy.exe" --profile-directory=Default --app-id=omahloekemgldcjjnolkgifggmedapio

实质上只是在具有专属边框的独立窗口中打开了这个网页而已。

这样做有什么好处呢?

首先相比于单独的程序而言,这个方法不需要真正地安装程序,其实质上可以理解为一个快捷方式。

其次,相比于普通的网页而言,安装为“应用”的网页可以离线打开、方便缓存很多内容等。

假如我做了一个纯前端的在线图片生成工具箱,那么我就可以将其打包成PWA应用,这样用户在“安装到本地后”,可以在几乎不占用额外硬盘空间的情况下(当然缓存当前前端页面及其资源还是要占用一丢丢的空间的),离线使用这个工具箱。

有点介绍完了,怎么卸载呢?

两种方法,一个是直接在Windows设置中卸载

卸载1

另一个是在打开应用后,点击右上方三个点,并选择卸载

卸载2

记得清除数据

清除数据

前言讲完了,接下来是其简介,以及如何编写PWA应用:

简介(Answered by ChatGPT)

PWA指的是Progressive Web App,是一种通过Web技术实现类似原生应用的用户体验的应用程序。

与传统的Web应用程序不同,PWA可以离线访问,有着更快的加载速度、更流畅的交互体验,并且可以在桌面上以应用程序的形式运行。PWA利用了现代浏览器提供的一些API和技术,如Service Workers和Web App Manifests,实现了离线缓存、推送通知、添加到主屏幕等功能,使得用户可以像使用原生应用程序一样使用它们。

PWA的优点包括:

  1. 不需要下载安装:PWA不需要用户下载和安装,可以通过浏览器直接使用。
  2. 快速加载:PWA可以利用Service Workers等技术,实现本地缓存和离线访问,使得加载速度更快。
  3. 可以离线访问:PWA可以离线使用,用户不必依赖网络连接。
  4. 可以添加到主屏幕:用户可以将PWA添加到主屏幕,以应用程序的形式进行访问。
  5. 推送通知:PWA可以通过推送通知的方式向用户发送信息,增强用户体验。

总的来说,PWA是一种融合了Web和原生应用程序的优点的新型应用程序,为用户提供了更好的体验,也为开发者提供了更便捷的开发方式。

如何编写PWA应用

当然还是看官方文档为妙:

  • 谷歌官方文档(点击后会跳转到这里大陆可直接访问)
  • Mozilla文档

最后贴上ChatGPT对“如何编写PWA应用”的总结:

PWA(Progressive Web Apps)是一种使用 Web 技术编写的应用程序,可以像原生应用程序一样运行,并提供离线缓存、推送通知等功能。下面是编写 PWA 应用的一般步骤:

  1. 确定应用程序的功能和设计,以及响应式布局、离线缓存等功能。
  2. 使用 HTML、CSS 和 JavaScript 编写应用程序代码。建议使用模块化的代码结构和框架(如 React、Vue.js 等)。
  3. 在代码中添加必要的 Web App Manifest 和 Service Worker。Web App Manifest 是一个 JSON 文件,包含应用程序的元数据,如名称、图标、颜色、起始页 URL 等。Service Worker 是一个 JavaScript 文件,用于缓存应用程序的静态资源并提供离线访问功能。
  4. 部署应用程序到 Web 服务器上,并确保它是通过 HTTPS 协议访问的,以确保应用程序的安全性和信任度。
  5. 在浏览器中访问应用程序,添加到主屏幕,并测试其功能和性能。

总之,编写 PWA 应用需要了解 Web 技术和 PWA 的相关规范,同时使用现代的开发工具和框架可以帮助开发人员更加高效地开发 PWA 应用。

Sample

附上修改简化后的“W3开放网”的PWA的manifest.json

{"name": "W3开放网","short_name": "W3开放网","start_url": "/?source=pwa","display": "standalone","scope": "/","background_color": "#fff","homepage": "http://127.0.0.1:5500/","icons": [{"src": "https://www.w3dev.cn/images/48x48.png","type": "image/png","sizes": "48x48"},{"src": "https://www.w3dev.cn/images/96x96.png","type": "image/png","sizes": "96x96"},{"src": "https://www.w3dev.cn/images/144x144.png","type": "image/png","sizes": "144x144"},{"src": "https://www.w3dev.cn//images/192x192.png","type": "image/png","sizes": "192x192"}]
}

原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/129629012

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...