Workbox è stato progettato per essere modulare, consentendo agli sviluppatori di selezionare i componenti che vogliono utilizzare senza dover scaricare tutto in un unico file.
Tuttavia, esiste una sovrapposizione tra i moduli, ad esempio ogni modulo dovrà interagire con la console, generare errori significativi e utilizzare la rete o la cache. Per evitare che ogni modulo implementi la stessa logica,
workbox-core contiene questo codice comune su cui si basa ogni modulo.
Questo modulo fornisce alcune funzionalità agli sviluppatori, ma oltre ai livelli di log e alla memorizzazione nella cache, workbox-core offre la logica interna a ogni modulo, piuttosto che allo sviluppatore finale.
Visualizzare e modificare i nomi della cache predefiniti
Workbox definisce le proprie cache tramite cacheNames:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Questi nomi della cache sono costituiti da un prefisso, un nome e un suffisso, dove il nome cambia in base all'utilizzo della cache.
<prefix>-<cache-id>-<suffix>
Puoi modificare questi nomi predefiniti modificando tutti o alcuni dei valori passati a 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);
Il caso d'uso principale per il prefisso e il suffisso è che se utilizzi Workbox per più progetti e la stessa porta localhost per ogni progetto, l'impostazione di un prefisso personalizzato per ogni modulo impedirà alle cache di entrare in conflitto tra loro.
Dichiarazione dei clienti
Alcuni sviluppatori vogliono poter pubblicare un nuovo worker di servizio e controllarne subito il funzionamento non appena viene attivato, cosa che non accade per impostazione predefinita.
Se vuoi questo comportamento, workbox-core fornisce un metodo di assistenza:
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();
Il metodo clientsClaim() in workbox-core aggiunge automaticamente un activate
listener di eventi al tuo service worker e al suo interno chiama
self.clients.claim(). La chiamata a self.clients.claim() prima dell'attivazione dell'attuale worker del servizio comporterà un'eccezione di runtime e il wrapper di workbox-core ti aiuta ad assicurarti di chiamarlo al momento giusto.
Il wrapper skipWaiting è deprecato
Prima della versione 6 di Workbox, gli sviluppatori erano anche incoraggiati a utilizzare il metodo skipWaiting()
di workbox-core. Tuttavia, questo metodo offriva poco valore rispetto a quanto ottenuto dagli sviluppatori se avessero chiamato self.skipWaiting() esplicitamente.
Poiché il wrapper workbox-core precedente registrava anche un gestore di eventi install
in cui veniva chiamato self.skipWaiting(), il wrapper non si comportava come previsto
se veniva chiamato all'interno di un altro gestore di eventi, come message, dopo che l'installazione
era già stata completata.
Per questi motivi, skipWaiting() di workbox-core è deprecato e gli sviluppatori devono passare a chiamare direttamente self.skipWaiting(). A differenza di self.clients.claim(), self.skipWaiting() non genera un'eccezione se viene chiamato al momento "sbagliato", quindi non è necessario racchiuderlo in un gestore eventi.
Tipi
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
Parametri
Resi
- 
            Promise<void> 
CacheDidUpdateCallbackParam
Proprietà
- 
    cacheNamestringa 
- 
    eventoExtendableEvent 
- 
    newResponseRisposta 
- 
    oldResponseRisposta facoltativa 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
): Promise<void | Response>
Parametri
Resi
- 
            Promise<void | Response> 
CachedResponseWillBeUsedCallbackParam
Proprietà
- 
    cacheNamestringa 
- 
    cachedResponseRisposta facoltativa 
- 
    eventoExtendableEvent 
- 
    matchOptionsCacheQueryOptions facoltativo 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
): Promise<string | Request>
Parametri
Resi
- 
            Promise<string | Request> 
CacheKeyWillBeUsedCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    modalitàstringa 
- 
    paramsqualsiasi facoltativo 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
): Promise<void | Response>
Parametri
Resi
- 
            Promise<void | Response> 
CacheWillUpdateCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    rispostaRisposta 
- 
    statoMapLikeObject facoltativo 
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
): Promise<void>
Parametri
Resi
- 
            Promise<void> 
FetchDidFailCallbackParam
Proprietà
- 
    erroreErrore 
- 
    eventoExtendableEvent 
- 
    originalRequestRichiesta 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
): Promise<Response>
Parametri
Resi
- 
            Promise<Response> 
FetchDidSucceedCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    rispostaRisposta 
- 
    statoMapLikeObject facoltativo 
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
): Promise<void>
Parametri
Resi
- 
            Promise<void> 
HandlerDidCompleteCallbackParam
Proprietà
- 
    erroreErrore facoltativo 
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    rispostaRisposta facoltativa 
- 
    statoMapLikeObject facoltativo 
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
): Promise<Response>
Parametri
Resi
- 
            Promise<Response> 
HandlerDidErrorCallbackParam
Proprietà
- 
    erroreErrore 
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
): Promise<void>
Parametri
Resi
- 
            Promise<void> 
HandlerDidRespondCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    rispostaRisposta facoltativa 
- 
    statoMapLikeObject facoltativo 
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
): Promise<Response>
Parametri
Resi
- 
            Promise<Response> 
HandlerWillRespondCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    rispostaRisposta 
- 
    statoMapLikeObject facoltativo 
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Parametri
Resi
- 
            Promise<void> 
HandlerWillStartCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
Il callback "handler" viene invocato ogni volta che un Router corrisponde a un URL/una richiesta
a un Route tramite il relativo RouteMatchCallback. Questo callback del gestore deve
restituire un Promise che si risolve con un Response.
Se RouteMatchCallback restituisce un array o un oggetto non vuoto, questo verrà passato come argomento options.params di questo gestore.
Parametri
- 
    opzioni
Resi
- 
            Promise<Response> 
ManualHandlerCallbackOptions
Opzioni passate a una funzione ManualHandlerCallback.
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestastringa | Richiesta 
MapLikeObject
PluginState
Per il momento viene utilizzato un semplice MapLikeObject, ma in futuro potremmo estendere/limitare questa opzione.
Tipo
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
): Promise<Request>
Parametri
Resi
- 
            Promise<Request> 
RequestWillFetchCallbackParam
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    statoMapLikeObject facoltativo 
RouteHandler
RouteHandlerCallback o RouteHandlerObject.
La maggior parte delle API in workbox-routing che accettano gestori di route accettano entrambi.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
Il callback "handler" viene invocato ogni volta che un Router corrisponde a un URL/una richiesta
a un Route tramite il relativo RouteMatchCallback. Questo callback del gestore deve
restituire un Promise che si risolve con un Response.
Se RouteMatchCallback restituisce un array o un oggetto non vuoto, questo verrà passato come argomento options.params di questo gestore.
Parametri
- 
    opzioni
Resi
- 
            Promise<Response> 
RouteHandlerCallbackOptions
Opzioni passate a una funzione RouteHandlerCallback.
Proprietà
- 
    eventoExtendableEvent 
- 
    paramsMapLikeObject | stringa[] facoltativo 
- 
    richiestaRichiesta 
- 
    urlURL 
RouteHandlerObject
Un oggetto con un metodo handle di tipo RouteHandlerCallback.
Un oggetto Route può essere creato con una funzione RouteHandlerCallback o con questo oggetto RouteHandler. Il vantaggio di RouteHandler
è che può essere esteso (come avviene con il pacchetto workbox-strategies).
Proprietà
- 
    handle
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
): any
Il callback "match" viene utilizzato per determinare se un Route deve essere applicato per un determinato URL e richiesta. Quando la corrispondenza si verifica in risposta a un evento di recupero dal client, viene fornito anche l'oggetto event. Tuttavia, poiché il callback di corrispondenza può essere invocato al di fuori di un evento di recupero, la logica di corrispondenza non deve presupporre che l'oggetto event sarà sempre disponibile.
Se il callback di corrispondenza restituisce un valore vero, il RouteHandlerCallback della route corrispondente verrà invocato immediatamente. Se il valore restituito è un array o un oggetto non vuoto, verrà impostato sull'argomento options.params dell'handler.
Parametri
- 
    opzioni
Resi
- 
            qualsiasi 
RouteMatchCallbackOptions
Opzioni passate a una funzione RouteMatchCallback.
Proprietà
- 
    eventoExtendableEvent 
- 
    richiestaRichiesta 
- 
    sameOriginbooleano 
- 
    urlURL 
WorkboxPlugin
Un oggetto con proprietà di callback del ciclo di vita facoltative per le operazioni di recupero e memorizzazione nella cache.
Proprietà
- 
    cacheDidUpdateCacheDidUpdateCallback facoltativo 
- 
    cacheKeyWillBeUsedCacheKeyWillBeUsedCallback facoltativo 
- 
    cacheWillUpdateCacheWillUpdateCallback facoltativo 
- 
    cachedResponseWillBeUsedCachedResponseWillBeUsedCallback facoltativo 
- 
    fetchDidFailFetchDidFailCallback facoltativo 
- 
    fetchDidSucceedFetchDidSucceedCallback facoltativo 
- 
    handlerDidCompleteHandlerDidCompleteCallback facoltativo 
- 
    handlerDidErrorHandlerDidErrorCallback facoltativo 
- 
    handlerDidRespondHandlerDidRespondCallback facoltativo 
- 
    handlerWillRespondHandlerWillRespondCallback facoltativo 
- 
    handlerWillStartHandlerWillStartCallback facoltativo 
- 
    requestWillFetchRequestWillFetchCallback facoltativo 
WorkboxPluginCallbackParam
Proprietà
- 
    cacheDidUpdate
- 
    cacheKeyWillBeUsed
- 
    cacheWillUpdate
- 
    cachedResponseWillBeUsed
- 
    fetchDidFail
- 
    fetchDidSucceed
- 
    handlerDidComplete
- 
    handlerDidError
- 
    handlerDidRespond
- 
    handlerWillRespond
- 
    handlerWillStart
- 
    requestWillFetch
Proprietà
cacheNames
Recupera i nomi e il prefisso/suffisso della cache corrente utilizzati da Workbox.
cacheNames.precache viene utilizzato per gli asset pre-memorizzati nella cache,
cacheNames.googleAnalytics viene utilizzato da workbox-google-analytics per memorizzare analytics.js e cacheNames.runtime viene utilizzato per tutto il resto.
cacheNames.prefix può essere utilizzato per recuperare solo il valore del prefisso corrente.
cacheNames.suffix può essere utilizzato per recuperare solo il valore del suffisso corrente.
Tipo
oggetto
Proprietà
- 
    googleAnalyticsstringa 
- 
    precachestringa 
- 
    prefissostringa 
- 
    runtimestringa 
- 
    suffissostringa 
Metodi
clientsClaim()
workbox-core.clientsClaim(): void
Rivendica tutti i clienti attualmente disponibili una volta che il servizio worker diventa attivo. Questo attributo viene normalmente utilizzato in combinazione con skipWaiting().
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
): Promise<Response>
Consente agli sviluppatori di copiare una risposta e di modificarne i valori headers, status o statusText (i valori impostabili tramite un oggetto [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax nel costruttore).
Per modificare questi valori, passa una funzione come secondo argomento. Questa funzione verrà richiamata con un singolo oggetto con le proprietà di risposta{headers, status, statusText}. Il valore restituito da questa funzione verrà utilizzato come ResponseInit per il nuovo Response. Per modificare i valori, modifica i parametri passati e restituiscili oppure restituisci un oggetto completamente nuovo.
Questo metodo è intenzionalmente limitato alle risposte dello stesso dominio, indipendentemente dall'utilizzo o meno di CORS.
Parametri
- 
    rispostaRisposta 
- 
    modificatorefunction facoltativa Il parametro modifierha il seguente aspetto:(responseInit: ResponseInit) => ResponseInit - 
    responseInitResponseInit 
 - 
            returnsResponseInit 
 
- 
    
Resi
- 
            Promise<Response> 
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Aggiunge una funzione all'insieme di quotaErrorCallbacks che verrà eseguita se si verifica un errore di quota.
Parametri
- 
    callbackFunzione 
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
Modifica i nomi delle cache predefinite utilizzati dai pacchetti Workbox.
I nomi delle cache vengono generati come <prefix>-<Cache Name>-<suffix>.
Parametri
- 
    dettagliPartialCacheNameDetails 
skipWaiting()
workbox-core.skipWaiting(): void
Questo metodo è deprecato e verrà rimosso nella versione 7 di Workbox.
La chiamata a self.skipWaiting() è equivalente e deve essere utilizzata al suo posto.