angular - Angular 中的手动 Service Worker
问题描述
是否可以添加Service Worker
在 Angular 中手动创建的而不是配置 JSON?
我想实现我自己的自定义代码
解决方案
您可以像这样创建 sw.js 文件
var cacheName = "your cache name";
self.addEventListener("install", event => {
event.waitUntil(
caches
.open(cacheName)
.then(cache =>
cache.addAll([
])
).then(() => self.skipWaiting())
);
});
//Removing outdated caches
self.addEventListener("activate", function (event) {
event.waitUntil(
caches.keys().then(function (cacheNames) {
return Promise.all(
cacheNames
.filter(function (cacheName) {
return true;
})
.map(function (cacheName) {
return caches.delete(cacheName);
})
);
}).then(() => self.clients.claim())
);
});
// Cache any new resources as they are fetched
self.addEventListener("fetch", function (event) {
});
然后在您的 app.component.ts 中放入这些代码
public ngOnInit() {
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("./sw.js")
.then(registration => {
// Registration was successful
console.log(
"ServiceWorker registration successful with scope: ",
registration.scope
);
})
.catch(err => {
// registration failed :(
console.log("ServiceWorker registration failed: ", err);
});
}
如果您有任何问题,请告诉我
推荐阅读
- c - 为什么 1+1 的大小是 5?
- php - PHP:取消/删除订阅在 MTN DEP 中不起作用
- c# - AutoMapper - 使用嵌套列表将对象列表转换为单个对象
- postgresql - PostgreSQL。这样的函数是否容易受到 SQL 注入的影响,还是安全的?
- jmeter - 用于失败测试用例的 J Meter 电子邮件配置
- php - 如何在 Codeigniter 4 中使用自定义目录路径调用模型或类
- flutter - 单击导航栏项目时,每次都应重新加载页面
- openstack - 无法通过 SSH/Ping 连接到 Openstack/packstack 专用网络上的虚拟机
- javascript - 如何使用 SQL 使用特定于“pg”模块 Postgres 的“字符串插值”查询多条记录
- database - 子域比主域更好吗