PWA之Workbox 入门

简介

Workbox 就是一个类库和Node模块的集合,让我们更轻松的缓存资源数据,充分利用这些功能来构建 pwa 程序

本文会告诉你如何创建并运行用Workbox访问页面的请求,并演示如何使用常见策略进行缓存。

由于大部分网站包含了css,js和图片,让我们来看看如何使用service worker 和 Workbox缓存这些文件。

注:以下看到sw就代表了service worker

创建并注册一个Service Worker文件

在使用Workbox之后,我们需要创建一个service worker文件并注册到我们的网站中。

在网站的根目录创建一个service-worker.js文件,添加一个console消息,这样我们能看到加载的情况。

console.log('Hello from service-worker.js');

在你自己的js页面添加如下内容,来注册service worker:

<script>
// Check that service workers are supported
if ('serviceWorker' in navigator) {
  // Use the window load event to keep the page load performant
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/service-worker.js');
  });
}
</script>

这段代码告诉浏览器,我们要使用service worker了,如果你刷新你的页面,你会在控制台看到service worker文件打印的信息。 Console message from sw.js in DevToolsConsole message from sw.js in DevTools

 在Chrome DevTools的Application选项卡中,你就会看到service worker已经注册成功。

Application Tab displaying a registered service worker.

注意: 选中 “Update on reload” ,这样我们就能够在每次刷新页面的时候,看到我们修改的结果。

现在,我们已经注册成功sw,下面就看看如何使用Workbox吧。

引入 Workbox

想要使用Workbox,你需要先在你的sw中引入workbox-sw.js文件。

在sw文件中,使用importScripts()方法引入workbox-sw.js文件。

importScripts('https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js');

if (workbox) {
  console.log(`Yay! Workbox is loaded 🎉`);
} else {
  console.log(`Boo! Workbox didn't load 😬`);
}

如果你看到了“Yay”信息,就代表Workbox已经在我们的sw中正式的加载成功了。

DevTools screenshot of Workbox loading in a service worker.

好了,我们可以开始使用Workbox了。

使用 Workbox

Workbox最主要的功能就是它的路由和缓存策略模块,它允许你监听来自你的网页请求,决定如何缓存请求并做出响应。

让我们为我们的js文件添加一个缓存回退机制,最简单的方法就是使用Workbox注册一个路由,来匹配请求的js文件,我们可以使用一个正则来注册路由地址。

workbox.routing.registerRoute(
  /\.js$/,
  …
);

Workbox会判断一个请求是否匹配当前路由地址,如果匹配,就对该请求“执行某些操作”,“执行某些操作”将通过Workbox的一种缓存策略传递请求。

如果我们想让我们的js文件总是请求网络上的文件,但是如果网络出现故障,则回退到缓存版本,就可以使用“网络优先”策略来实现。

workbox.routing.registerRoute(
  /\.js$/,
  new workbox.strategies.NetworkFirst()
);

添加代码并刷新网页,如果你的网站包含了js文件,你应该能看到类似这些的日志信息。

Example console logs from routing a JavaScript file.

Workbox已经路由成功任意的js文件,并使用网络优先策略来决定如何响应请求。你可以从DevTools中看到缓存的信息,来看看请求是否真的被缓存。

Example of a JavaScript file being cached.

Workbox本身提供了一些缓存策略,例如下面的代码,CSS文件使用了缓存优先后台更新策略,图片信息使用了时间过期策略。

orkbox.routing.registerRoute(
  // Cache CSS files.
  /\.css$/,
  // Use cache but update in the background.
  new workbox.strategies.StaleWhileRevalidate({
    // Use a custom cache name.
    cacheName: 'css-cache',
  })
);

workbox.routing.registerRoute(
  // Cache image files.
  /\.(?:png|jpg|jpeg|svg|gif)$/,
  // Use the cache if it's available.
  new workbox.strategies.CacheFirst({
    // Use a custom cache name.
    cacheName: 'image-cache',
    plugins: [
      new workbox.expiration.Plugin({
        // Cache only 20 images.
        maxEntries: 20,
        // Cache for a maximum of a week.
        maxAgeSeconds: 7 * 24 * 60 * 60,
      })
    ],
  })
);

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue Workbox 是一个 Vue 插件,它和 Google 的 Workbox 库结合使用,提供了一种简单的方式来实现 Progressive Web App (PWA) 的功能。 Workbox 是一套用于构建 PWA 的工具库,它提供了一些预设的功能与策略,用于缓存、离线、推送等方面的处理。Vue WorkboxWorkbox 的功能集成到 Vue 项目中,使得开发者可以更方便地使用 Workbox,并和 Vue 的生态系统进行无缝的集成。 通过 Vue Workbox,开发者可以简单地在 Vue 项目中配置 Service Worker,该 Service Worker 可以用来缓存项目中的资源,包括 HTML、CSS、JavaScript、图片等等。这样,当用户第一次访问应用程序时,这些资源将被缓存下来,下次用户再次访问应用程序时会更快地加载。 另外,Vue Workbox 还支持设置离线页面,在用户无法连接到互联网时展示一个离线提示页面,提供离线的浏览体验。这对于一些需要经常离线使用的应用程序非常有用,比如笔记应用、待办事项应用等。 除了上述功能外,Vue Workbox 还提供了一些高级功能,比如支持 Web Push 推送通知,允许应用程序在用户离线时向其发送通知。这可以用于实现一些需要及时通知用户的功能,比如新消息提醒、提醒用户完成某些任务等。 总之,Vue Workbox 是一个非常有用的插件,它帮助开发者轻松地将 PWA 功能集成到 Vue 项目中,提供了一种更好的用户体验,使得 Web 应用程序具备了类似原生应用的功能和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值