离线应用PWA-service work

1.有时候希望没有网络的时候,也可以正常的访问对应的页面,就需要用到service work 进行对应的配置,可以当页面的配置  也可以多页面的配置,单页面配置比较麻烦 就以uniapp框架为基础 来配置service work 

一  配置 manifest 文件  (此manifest和uniapp 的 manifest.不是同一个文件配置)

  1.1 在配置index.html模板  通过link 引入对应的manifest文件

  注意事项  官方的index,html 有个 noscript 标签 记得去掉,

manifest内容

注意事项 :start_url的路径和uniapp的web配置路径要一致  比如基础路径为  /h5  这边也是对应的 /h5

{
  "start_url": "基础路径", //开始的路径 这里最好就是和uniapp的web配置路径要一直
  "name": "项目名字",
  "short_name": "项目名字",
  "icons": [
      {
          "src": "基础路径/static/pwa_icon.png",  // 如果 以 /开头 则为域名的根路径算起  如果是 ./开头 则是以manifest所在文件的位置算起
          "type": "image/png",
          "sizes": "144x144"
      }
  ],
  "display": "standalone",
  "background_color": "#1b2740",
  "theme_color": "#ffffff"
}

1.2看是否配置成功 运行项目,在浏览器如果能查看到以下的内容就是配置成功,如果不是请检查以下路径的引入是否正确

二. 注册service worker

1.1 在main,js入口文件注册 

注意事项

     1. service worker只允许在localhost 环境或者 https 环境下才能支持允许

     2. service worker只允许放在域名的根目录 不能放在其他的位置 其他的位置在单页面的情况下容易造成数据丢失,在本地的时候 可以通过放在static进行调试

/* 离线缓存 */
if ('serviceWorker' in window.navigator) {

	const path = {
		pro: './service-worker.js',
		dev: './static/service-worker/service-worker.js'
	}
	

	window.addEventListener('load', () => {
		navigator.serviceWorker.register(path[config.devType])
			.then(registration => {
				console.log('mian注册成功');
				console.log('Service Worker registered:', registration.scope);
			})
			.catch(error => {
				console.log('注册失败');
				console.error('Service Worker registration failed:', error);
			});
	});
}
1.2.查看是否配置成功,可在浏览器  开发者调试 如下图看到对应的监听器就是注册成功

三,进行service worker 数据的缓存

 1.1 监听资源的监听
self.addEventListener('install', (event) => {
	// 要缓存的静态文件
	let urlsToCache = [
		'/',
		FILE_NAME +'/',
		FILE_NAME +'/index.html',
		....其他的静态文件,上面三个是必须的
	]
	event.waitUntil(
		caches.open(CACHE_NAME)
		.then(cache => {
			console.log('cache',cache);
			cache.addAll(urlsToCache)
		})
	)
});
1.2 监听缓存版本的更新
//监听activite事件, 激活后通过cache的key来判断是否需要更新cache中的静态资源
self.addEventListener('activate',function (e) {
	const cacheName = [''];
    console.log('Service Worker 当前状态: activate');
    const cachePromise = caches.keys().then(function (keys) {
        return Promise.all(keys.map(function (key) {
            if(key !== CACHE_NAME) {
                return caches.delete(key);
            }
        }))
    });
    e.waitUntil(cachePromise);
    return self.clients.claim(); //激活触发Service Worker
});
1.3 监听接口数据缓存(看是否需要对接口进行数据缓存 但是相同的接口地址会更新覆盖,比如post请求 )

                

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网安小贴士(1)等级保护

一、定义 等保,即信息安全等级保护,根据信息系统在国家安全、经济建设、社会生活中的重要程度,以及信息系统遭到破坏后对国家安全、社会秩序、公共利益以及公民、法人和其他组织的合法权益的危害程度,将信息系统分为五个不同的安全…

[leetcode]文件组合

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<vector<int>> fileCombination(int target) {vector<vector<int>> vec;vector<int> res;int sum 0, limit (target - 1) / 2; // (target - 1) / 2 等效于 target /…

《塔瑞斯世界》国服震撼登场!AOC助力玩家开启游戏新征途!

一款真正高画质、重机制、轻数值的MMORPG大作&#xff01; 你是否厌倦了在MMORPG游戏中被“氪金大佬”碾压&#xff1f;你是否渴望一个纯粹依靠技术和策略就能获得成就感的游戏世界&#xff1f;如果你对这两个问题的答案都是肯定的&#xff0c;那么《塔瑞斯世界》或许值得你一…

二叉树遍历练习题

2.已知某二叉树的前序遍历序列为5 7 4 9 6 2 1&#xff0c;中序遍历序列为4 7 5 6 9 1 2&#xff0c;则其后序遍历序列为&#xff08; &#xff09; A.4 2 5 7 6 9 1 B.4 2 7 5 6 9 1 C.4 7 6 1 2 9 5 D.4 7 2 9 5 6 1 答案&#xff1a;C 解析&#xff1a; 通过前序遍历找…

舞会无领导:一种树形动态规划的视角

没有上司的舞会 Ural 大学有 &#x1d441; 名职员&#xff0c;编号为1∼&#x1d441;。 他们的关系就像一棵以校长为根的树&#xff0c;父节点就是子节点的直接上司。 每个职员有一个快乐指数&#xff0c;用整数 &#x1d43b;&#x1d456; 给出&#xff0c;其中1≤&…

慧翰股份毛利率下滑:股权转让纠纷引关注,研发费用率远弱同行还买楼?

《港湾商业观察》施子夫 6月11日&#xff0c;慧翰微电子股份有限公司&#xff08;以下简称&#xff0c;慧翰股份&#xff09;IPO注册申请获证监会同意&#xff0c;预计公司将很快登陆深交所创业板&#xff0c;保荐机构为广发证券。 从业绩面来看&#xff0c;过去三年&#xf…

筛斗数据全面解析数据提取与清洗的重要性

筛斗数据全面解析数据提取与清洗的重要性 在数字化时代&#xff0c;数据是企业决策的重要依据。然而&#xff0c;数据并非总是以我们期望的形式出现&#xff0c;它们可能分散、冗余、错误甚至不完整。因此&#xff0c;数据提取与清洗成为数据处理流程中不可或缺的两个环节。筛…

ActiveMq工具之管理页面说明

文章目录 安装ActiveMQ一: 访问管理页面二: 进入管理页面&#xff0c;主页三: Queues页说明四: Topics页说明五: Subscribers页说明 安装ActiveMQ wget https://archive.apache.org/dist//activemq/5.13.3/apache-activemq-5.13.3-bin.tar.gz wget https://mirrors.huaweiclou…

docker-compose搭建minio对象存储服务器

docker-compose搭建minio对象存储服务器 最近想使用oss对象存储进行用户图片上传的管理&#xff0c;了解了一下例如aliyun或者腾讯云的oss对象存储服务&#xff0c;但是呢涉及到对象存储以及经费有限的缘故&#xff0c;决定自己手动搭建一个oss对象存储服务器&#xff1b; 首先…

[数据集][目标检测]城市街道井盖破损未盖丢失检测数据集VOC+YOLO格式4404张5类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;4404 标注数量(xml文件个数)&#xff1a;4404 标注数量(txt文件个数)&#xff1a;4404 标注…

嵌入式以太网硬件构成与MAC、PHY芯片功能介绍

一.以太网电路基本构成 1.总体介绍 对于上述三部分&#xff0c;并不一定都是独立的芯片&#xff0c;主要有以下几种情况&#xff1a; CPU内部集成了MAC和PHY&#xff0c;难度较高&#xff1b; CPU内部集成MAC,PHY采用独立芯片(主流方案)&#xff1b; CPU不集成MAC和PHY&#…

.net8 Syncfusion生成pdf/doc/xls/ppt最新版本

新建控制台程序 添加包Syncfusion.Pdf.Net.Core包&#xff0c;当前官方的版本号为26.1.39 直接上代码 Syncfusion.Pdf.PdfDocument pdfDocument new Syncfusion.Pdf.PdfDocument(); for (int i 1; i < 10; i) {var page pdfDocument.Pages.Add();PdfGraphics graphics…

uniapp中如何进行微信小程序的分包

思路&#xff1a;在uniapp中对微信小程序进行分包&#xff0c;和原生微信小程序进行分包的操作基本上没区别&#xff0c;主要就是在pages.json中进行配置。 如图&#xff0c;我新增了一个包diver-page 此时需要在pages.json中的subPackages数组中新增一项 root代表这个包的根…

【工具推荐】ONLYOFFICE8.1版本编辑器测评——时下的办公利器

文章目录 一、产品介绍1. ONLYOFFICE 8.1简介2. 多元化多功能的编辑器 二、产品体验1. 云端协作空间2. 桌面编辑器本地版 三、产品界面设计1. 本地版本2. 云端版本 四、产品文档处理1. 文本文档&#xff08;Word)2. 电子表格&#xff08;Excel&#xff09;3. PDF表单&#xff0…

vue3.2及以上 父调子的方法defineExpose定义供父调用的方法及属性

1、定义子类LoginForm&#xff1a; function handleLogin(account, token) {console.log(account,token)}defineExpose({handleLogin,}); 2、父类调用子类组件 const loginFormRef ref(); <LoginForm ref"loginFormRef" />loginFormRef.value.handleLogin(…

配电房挂轨巡检机器人

配电房作为电网中的重要组成部分。其运行的的安全和稳定性直接影响到电力供应的质量。然而&#xff0c;传统的人工巡检模式存在诸多弊端&#xff0c;例如巡检效率低下、人员安全难以保障、巡检结果主观性强等问题。为了解决这些问题&#xff0c;旗晟机器人推出B3系列升降云台轨…

Python学习路线图(2024最新版)

这是我最开始学Python时的一套学习路线&#xff0c;从入门到上手。&#xff08;不敢说精通&#xff0c;哈哈~&#xff09; 一、Python基础知识、变量、数据类型 二、Python条件结构、循环结构 三、Python函数 四、字符串 五、列表与元组 六、字典与集合 最后再送给大家一套免费…

VLAN原理与配置

AUTHOR &#xff1a;闫小雨 DATE&#xff1a;2024-04-28 目录 VLAN的三种端口类型 VLAN原理 什么是VLAN 为什么使用VLAN VLAN的基本原理 VLAN标签 VLAN标签各字段含义如下&#xff1a; VLAN的划分方式 VLAN的划分包括如下5种方法&#xff1a; VLAN的接口链路类型 创建V…

机械原理介绍

机械原理介绍 1 介绍1.1 概述1.2 资料书籍在线资料 2 [机械原理知识整理](https://tomm.muzing.top/) 【muzing整理编写】1 绪论2 机构的结构分析2-2 机构的组成及分类2-3 机构运动简图2-4 机构具有确定运动的条件及最小阻力定律2-5 2-6 机构自由度的计算2-7 平面机构的组成原理…

代码随想录算法训练营第40天| 518. 零钱兑换 II、 377. 组合总和 Ⅳ、70. 爬楼梯 (进阶)

518. 零钱兑换 II 题目链接&#xff1a;518. 零钱兑换 II 文档讲解&#xff1a;代码随想录 状态&#xff1a;不会 思路&#xff1a; 和494.目标和类似&#xff0c;这题属于组合问题&#xff0c;当我们有一个硬币coin时&#xff0c;对于每个金额j&#xff0c;通过添加这个硬币&a…