此时,Service Worker 看起来可能很棘手。面对大量复杂的互动,很难做到这一点。网络请求!缓存策略!缓存管理!预缓存! 其中有很多信息需要记住。 这不会使 Service Worker 成为一种设计不合理的技术;它能够按预期运行,并可解决棘手的问题。
好的抽象会使复杂的 API 更易于使用。 这正是 Workbox 的用武之地。 Workbox 是一组可简化常见 Service Worker 路由和缓存的模块。每个可用模块都适用于 Service Worker 开发的一个具体方面。Workbox 旨在尽可能简化 Service Worker 的使用,同时根据需要灵活地满足复杂的应用要求。
在最简单的情况下,workbox-build
提供了几种方法来生成用于预缓存指定资源的 Service Worker。generateSW
方法可以开箱即用地完成大部分工作,而 injectManifest
方法则可在必要时提供更多控制。
对于更高级的用例,其他模块可以提供帮助。其中一些模块包括:
workbox-routing
,用于请求匹配。workbox-strategies
,适用于缓存策略。workbox-precaching
(用于预缓存)。workbox-expiration
,用于管理缓存。workbox-window
,用于注册 Service Worker 并在window context
中处理更新。
这些模块和其他模块有助于以声明式的方式编写 Service Worker 代码,与直接使用 Service Worker API 相比,更易于读取和维护。本文档将介绍如何运用这些方式。