pwa 让你的网页可以像本地程序一样安装到电脑上,Youtube网站使用的也是当前方法 (chrome版本)

news/2024/12/29 15:28:19/

文章目录

  • 关键技术
  • 简介
    • pwa
    • service works (简称sw)
    • 看效果
  • 实现方法:
    • 创建目录结构如下
    • 重点介绍manifest.json内容
    • 其他代码

关键技术

- pwa
- service works

简介

pwa

首先说明我是通过youtube发现的这个东西,上网一搜,居然是14 15年就出现的技术了。

PWA(Progressive Web Apps,渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。这些应用无处不在、功能丰富,使其具有与原生应用相同的用户体验优势。这组文档和指南告诉您有关 PWA 的所有信息。

service works (简称sw)

Service Worker 是浏览器和网络之间的虚拟代理。 它们终于解决了前端开发人员多年来一直在努力解决的一些问题,其中最值得关注的是,解决了如何正确缓存网站资源并使其在离线时可用的问题。

Service Worker 运行在一个与页面 JavaScript 主线程独立的线程上,并且无权访问 DOM 结构。这引入了一种与传统 Web 编程不同的方式:它的 API 是非阻塞的,并且可以在不同的上下文之间发送和接收信息。您可分配给 Service Worker 一些任务,并通过基于 Promise 的方法在任务完成时收到结果。

它不仅仅提供离线功能,还可以做包括处理通知、在单独的线程上执行繁重的计算等事务。Service workers 非常强大,因为他们可以控制网络请求、修改网络请求、返回缓存的自定义响应,或者合成响应。

看效果

当打开这个网址https://www.190otc.com/pwa/index.html 的时候,chrome浏览器会有一个安装的图标,点击后,可以进行安装。
可以通过chrome://apps查看已经安装的apps,并且进行卸载。
这个网址是我做测试使用的,可能有一天打不开了,可以去我的github上下载源码,放到任何一个支持https协议的网站上部署一下。 重点,一定要支持https协议
在这里插入图片描述

安装后的效果
桌面图标效果:
在这里插入图片描述

启动后的效果
在这里插入图片描述

实现方法:

  • 方法1:你是一个懒惰的人,不想看代码,只想先看看实现效果,那就去github上下载源码,直接发布到支持https的网站上就可以了。
  • 方法二:看我下面的内容一点点介绍吧。

创建目录结构如下

我们先创建一个关于 PWA 的项目文件夹,
进入文件夹下我们准备一张 256x256的图片一张,作为我们的应用程序图标。

  • 创建一个 index.html 文件
  • 创建一个 main.css 文件
  • 创建一个 manifest.json 文件
  • 创建一个 sw.js 文件

在这里插入图片描述

重点介绍manifest.json内容

{"short_name": "190桌面系统","name": "190桌面系统","description": "这是一个测试网页 ©iml6yu", "icons": [{"src": "logo.png","type": "image/png","sizes": "256x256"} ],"start_url": "index.html","background_color": "#3f51b5","display": "standalone", "theme_color": "#3f51b5" 
}

其他代码

存储在https://github.com/iml6yu/pwa_demo上,支持下载。

https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps
https://developer.mozilla.org/zh-CN/docs/Web/Progressive_web_apps/Offline_Service_workers
https://blog.csdn.net/lecepin/article/details/64906620?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163680249516780262574797%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163680249516780262574797&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-3-64906620.pc_search_result_control_group&utm_term=pwa&spm=1018.2226.3001.4187
https://blog.csdn.net/qq_32447301/article/details/82907632?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163680249516780262574797%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163680249516780262574797&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-82907632.pc_search_result_control_group&utm_term=pwa&spm=1018.2226.3001.4187


http://www.ppmy.cn/news/140033.html

相关文章

GIT常用操作

上传到暂存区:git add . git add 文件或目录名 暂存区提交到仓库区:git commit -m “注释” 上传并提交至仓库区(快捷命令):git commit -am ‘注释’ 看文件状态:git status 撤消add全部操作:g…

ChatGPT出来后,为什么老有人想让我们程序员失业?

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…

如何使用Sentinel的Slot插槽实现限流熔断,看完这篇文章会有新的收获

前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章将详细介绍如何使用Sentinel的Slot插槽实现限流熔断,后续文章将详细介绍Sentinel的其他知识。 如果文章有什么需要改进的地方还请大佬不吝赐教&#x…

VP记录:Codeforces Round 599 (Div. 2) A~D

传送门:CF 前提提要:无 A题:A. Maximum Square 刚开始的第一个想法是排序然后二分答案.但是一看范围才1000,果断直接使用暴力枚举. 考虑枚举最终的答案,然后记录有多少个 a i ai ai大于此值,然后判断能否构成一个正方形即可. #include <bits/stdc.h> using namespace…

MacBookPro M1安装 Ubuntu

1&#xff0c;下载软件 首先&#xff0c;到Parallels Desktop for Mac官网下载Parallels Desktop&#xff0c;然后安装即可。 接着&#xff0c;去ubuntu官网下载ubuntu的iso镜像。 2&#xff0c;加载镜像 首先&#xff0c;我们启动Parallels Desktop&#xff0c;然后点击…

[mac] 解决 mac 外接屏幕分辨率过高的问题

解决 mac 外接屏幕分辨率过高的问题 之前 mac 用的外接屏幕的最高分辨率是 1920 x 1080&#xff0c;使用起来很舒服。 最近换了块 2k 屏&#xff0c;默认分辨率为 2560 x 1440&#xff0c;分辨率过高导致字体很小看起来很不舒服 手动调用外接屏幕分辨率 System Preference…

全新安装Mac OSX 开发者环境 同时使用homebrew搭建 PHP,Nginx ,MySQL,Redis,Memcache ... ... (LNMP开发环境)

原文出处 &#xff1a; 全新安装Mac OSX 开发者环境 非常好的文章 赞 用了一年的Mac OS X了&#xff0c;之前不熟悉这个系统&#xff0c;用的是系统自带的PHP 以及DMG包安装的MySQL&#xff0c;时间长了&#xff0c;慢慢觉得MacBook的速度跟不上了&#xff0c;虽然关机次数不…

mac 安装php开发环境

用了一年的Mac OS X了&#xff0c;之前不熟悉这个系统&#xff0c;用的是系统自带的PHP 以及DMG包安装的MySQL&#xff0c;时间长了&#xff0c;慢慢觉得MacBook的速度跟不上了&#xff0c;虽然关机次数不多&#xff0c;但是每次开机&#xff0c;或者唤醒电脑的时候&#xff0c…