Workbox a été conçu pour être modulaire, ce qui permet aux développeurs de sélectionner les éléments qu'ils souhaitent utiliser sans les forcer à tout télécharger dans un seul fichier.
Il existe cependant des chevauchements entre les modules. Par exemple, chaque module devra interagir avec la console, générer des erreurs significatives et utiliser le réseau ou le cache. Pour éviter que chaque module implémente la même logique, workbox-core contient ce code commun sur lequel chaque module s'appuie.
Ce module fournit certaines fonctionnalités aux développeurs, mais au-delà des niveaux de journalisation et de la mise en cache, workbox-core offre une logique interne à chaque module, plutôt qu'au développeur final.
Afficher et modifier les noms de cache par défaut
Workbox définit ses caches via cacheNames:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Ces noms de cache sont construits au format d'un préfixe, d'un nom et d'un suffixe, où le nom change en fonction de l'utilisation du cache.
<prefix>-<cache-id>-<suffix>
Vous pouvez modifier ces noms par défaut en modifiant la totalité ou une partie des valeurs transmises à setCacheNameDetails().
import {cacheNames, setCacheNameDetails} from 'workbox-core';
setCacheNameDetails({
prefix: 'my-app',
suffix: 'v1',
precache: 'install-time',
runtime: 'run-time',
googleAnalytics: 'ga',
});
// Will print 'my-app-install-time-v1'
console.log(cacheNames.precache);
// Will print 'my-app-run-time-v1'
console.log(cacheNames.runtime);
// Will print 'my-app-ga-v1'
console.log(cacheNames.googleAnalytics);
Le principal cas d'utilisation du préfixe et du suffixe est que si vous utilisez Workbox pour plusieurs projets et que vous utilisez le même port localhost pour chaque projet, définir un préfixe personnalisé pour chaque module empêchera les caches de se chevaucher.
Revendication des clients
Certains développeurs souhaitent pouvoir publier un nouveau service worker et le faire contrôler les pages Web déjà ouvertes dès qu'il s'active, ce qui ne se produit pas par défaut.
Si vous souhaitez obtenir ce comportement, workbox-core fournit une méthode d'assistance:
import {clientsClaim} from 'workbox-core';
// This clientsClaim() should be at the top level
// of your service worker, not inside of, e.g.,
// an event handler.
clientsClaim();
La méthode clientsClaim() dans workbox-core ajoute automatiquement un écouteur d'événement activate à votre service worker et, à l'intérieur, appelle self.clients.claim(). Appeler self.clients.claim() avant l'activation du worker de service actuel entraîne une exception d'exécution. Le wrapper de workbox-core vous permet de l'appeler au bon moment.
Le wrapper skipWaiting est obsolète
Avant la version 6 de Workbox, les développeurs étaient également encouragés à utiliser la méthode skipWaiting() à partir de workbox-core. Toutefois, cette méthode n'offrait que peu d'avantages par rapport à ce que les développeurs obtiendraient s'ils appelaient self.skipWaiting() explicitement.
Étant donné que l'ancien wrapper workbox-core enregistrait également un gestionnaire d'événements install dans lequel self.skipWaiting() était appelé, le wrapper ne se comportait pas comme prévu s'il était appelé dans un autre gestionnaire d'événements, comme message, une fois l'installation terminée.
C'est pourquoi skipWaiting() de workbox-core est obsolète, et les développeurs doivent passer à l'appel direct de self.skipWaiting(). Contrairement à self.clients.claim(), self.skipWaiting() ne génère pas d'exception s'il est appelé au "mauvais" moment. Il n'est donc pas nécessaire de l'encapsuler dans un gestionnaire d'événements.
Types
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
Paramètres
Renvoie
-
Promise<void>
CacheDidUpdateCallbackParam
Propriétés
-
cacheName
chaîne
-
événement
ExtendableEvent
-
newResponse
Réponse
-
oldResponse
Réponse facultatif
-
request
Requête
-
state
MapLikeObject facultatif
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
): Promise<void | Response>
Paramètres
Renvoie
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Propriétés
-
cacheName
chaîne
-
cachedResponse
Réponse facultatif
-
événement
ExtendableEvent
-
matchOptions
CacheQueryOptions facultatif
-
request
Requête
-
state
MapLikeObject facultatif
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
): Promise<string | Request>
Paramètres
Renvoie
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Propriétés
-
événement
ExtendableEvent
-
mode
chaîne
-
params
tout facultatif
-
request
Requête
-
state
MapLikeObject facultatif
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
): Promise<void | Response>
Paramètres
Renvoie
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
réponse
Réponse
-
state
MapLikeObject facultatif
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
): Promise<void>
Paramètres
Renvoie
-
Promise<void>
FetchDidFailCallbackParam
Propriétés
-
erreur
Erreur
-
événement
ExtendableEvent
-
originalRequest
Requête
-
request
Requête
-
state
MapLikeObject facultatif
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
): Promise<Response>
Paramètres
Renvoie
-
Promise<Response>
FetchDidSucceedCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
réponse
Réponse
-
state
MapLikeObject facultatif
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
): Promise<void>
Paramètres
Renvoie
-
Promise<void>
HandlerDidCompleteCallbackParam
Propriétés
-
erreur
Erreur facultatif
-
événement
ExtendableEvent
-
request
Requête
-
réponse
Réponse facultatif
-
state
MapLikeObject facultatif
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
): Promise<Response>
Paramètres
Renvoie
-
Promise<Response>
HandlerDidErrorCallbackParam
Propriétés
-
erreur
Erreur
-
événement
ExtendableEvent
-
request
Requête
-
state
MapLikeObject facultatif
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
): Promise<void>
Paramètres
Renvoie
-
Promise<void>
HandlerDidRespondCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
réponse
Réponse facultatif
-
state
MapLikeObject facultatif
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
): Promise<Response>
Paramètres
Renvoie
-
Promise<Response>
HandlerWillRespondCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
réponse
Réponse
-
state
MapLikeObject facultatif
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Paramètres
Renvoie
-
Promise<void>
HandlerWillStartCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
state
MapLikeObject facultatif
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
Le rappel "handler" est appelé chaque fois qu'un Router fait correspondre une URL/requête à un Route via son RouteMatchCallback. Ce rappel de gestionnaire doit renvoyer un Promise qui se résout avec un Response.
Si un tableau ou un objet non vide est renvoyé par RouteMatchCallback, il sera transmis en tant qu'argument options.params de ce gestionnaire.
Paramètres
-
options
Renvoie
-
Promise<Response>
ManualHandlerCallbackOptions
Options transmises à une fonction ManualHandlerCallback.
Propriétés
-
événement
ExtendableEvent
-
request
chaîne | Requête
MapLikeObject
PluginState
Utilisation d'un MapLikeObject simple pour le moment, mais il est possible de l'étendre/de le restreindre à l'avenir.
Type
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
): Promise<Request>
Paramètres
Renvoie
-
Promise<Request>
RequestWillFetchCallbackParam
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
state
MapLikeObject facultatif
RouteHandler
RouteHandlerCallback ou RouteHandlerObject.
La plupart des API de workbox-routing qui acceptent des gestionnaires de parcours en prennent un ou l'autre.
Énumération
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
Le rappel "handler" est appelé chaque fois qu'un Router fait correspondre une URL/requête à un Route via son RouteMatchCallback. Ce rappel de gestionnaire doit renvoyer un Promise qui se résout avec un Response.
Si un tableau ou un objet non vide est renvoyé par RouteMatchCallback, il sera transmis en tant qu'argument options.params de ce gestionnaire.
Paramètres
-
options
Renvoie
-
Promise<Response>
RouteHandlerCallbackOptions
Options transmises à une fonction RouteHandlerCallback.
Propriétés
-
événement
ExtendableEvent
-
params
MapLikeObject | chaîne[] facultatif
-
request
Requête
-
url
URL
RouteHandlerObject
Objet avec une méthode handle de type RouteHandlerCallback.
Un objet Route peut être créé avec une fonction RouteHandlerCallback ou cet objet RouteHandler. L'avantage de RouteHandler est qu'il peut être étendu (comme le fait le package workbox-strategies).
Propriétés
-
handle
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
): any
Le rappel "match" permet de déterminer si un Route doit s'appliquer à une URL et une requête spécifiques. Lorsqu'une mise en correspondance se produit en réponse à un événement de récupération du client, l'objet event est également fourni. Toutefois, comme le rappel de correspondance peut être appelé en dehors d'un événement de récupération, la logique de correspondance ne doit pas supposer que l'objet event sera toujours disponible.
Si le rappel de correspondance renvoie une valeur vraie, l'RouteHandlerCallback du parcours correspondant est appelé immédiatement. Si la valeur renvoyée est un tableau ou un objet non vide, cette valeur sera définie sur l'argument options.params du gestionnaire.
Paramètres
-
options
Renvoie
-
tous
RouteMatchCallbackOptions
Options transmises à une fonction RouteMatchCallback.
Propriétés
-
événement
ExtendableEvent
-
request
Requête
-
sameOrigin
booléen
-
url
URL
WorkboxPlugin
Objet avec des propriétés de rappel de cycle de vie facultatives pour les opérations de récupération et de mise en cache.
Propriétés
-
cacheDidUpdate
CacheDidUpdateCallback facultatif
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback facultatif
-
cacheWillUpdate
CacheWillUpdateCallback facultatif
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback facultatif
-
fetchDidFail
FetchDidFailCallback facultatif
-
fetchDidSucceed
FetchDidSucceedCallback facultatif
-
handlerDidComplete
HandlerDidCompleteCallback facultatif
-
handlerDidError
HandlerDidErrorCallback facultatif
-
handlerDidRespond
HandlerDidRespondCallback facultatif
-
handlerWillRespond
HandlerWillRespondCallback facultatif
-
handlerWillStart
HandlerWillStartCallback facultatif
-
requestWillFetch
RequestWillFetchCallback facultatif
WorkboxPluginCallbackParam
Propriétés
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Propriétés
cacheNames
Obtenez les noms de cache actuels et le préfixe/suffixe utilisés par Workbox.
cacheNames.precache est utilisé pour les éléments pré-mis en cache, cacheNames.googleAnalytics est utilisé par workbox-google-analytics pour stocker analytics.js, et cacheNames.runtime est utilisé pour tout le reste.
cacheNames.prefix permet de ne récupérer que la valeur du préfixe actuel.
cacheNames.suffix permet de ne récupérer que la valeur du suffixe actuel.
Type
objet
Propriétés
-
googleAnalytics
chaîne
-
précacher
chaîne
-
préfixe
chaîne
-
runtime
chaîne
-
suffixe
chaîne
Méthodes
clientsClaim()
workbox-core.clientsClaim(): void
Réclamez tous les clients actuellement disponibles une fois que le service worker est actif. Cette valeur est généralement utilisée avec skipWaiting().
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
): Promise<Response>
Permet aux développeurs de copier une réponse et de modifier ses valeurs headers, status ou statusText (les valeurs pouvant être définies via un objet [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax dans le constructeur).
Pour modifier ces valeurs, transmettez une fonction en tant que deuxième argument. Cette fonction sera appelée avec un seul objet avec les propriétés de réponse {headers, status, statusText}. La valeur renvoyée par cette fonction sera utilisée comme ResponseInit pour le nouveau Response. Pour modifier les valeurs, modifiez le ou les paramètres transmis et renvoyez-les, ou renvoyez un objet totalement nouveau.
Cette méthode est intentionnellement limitée aux réponses de même origine, que le CORS ait été utilisé ou non.
Paramètres
-
réponse
Réponse
-
modificateur
fonction facultatif
Le paramètre
modifierse présente comme suit :(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
Renvoie
ResponseInit
-
Renvoie
-
Promise<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Ajoute une fonction à l'ensemble de quotaErrorCallbacks qui sera exécutée en cas d'erreur de quota.
Paramètres
-
callback
Fonction
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
Modifie les noms de cache par défaut utilisés par les packages Workbox.
Les noms de cache sont générés au format <prefix>-<Cache Name>-<suffix>.
Paramètres
-
détails
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting(): void
Cette méthode est obsolète et sera supprimée dans la version 7 de Workbox.
Appeler self.skipWaiting() est équivalent et doit être utilisé à la place.