O Workbox foi criado para ser modular, permitindo que os desenvolvedores selecionem as peças que querem usar sem forçá-los a fazer o download de tudo em um único arquivo.
No entanto, há sobreposição entre os módulos. Por exemplo, cada módulo precisa
interagir com o console, gerar erros significativos e usar
a rede ou o cache. Para evitar que cada módulo implemente a mesma lógica,
workbox-core
contém esse código comum de que cada módulo depende.
Esse módulo fornece algumas funcionalidades para os desenvolvedores, mas além dos níveis
de registro e do armazenamento em cache, o workbox-core
oferece lógica interna para cada módulo,
e não para o desenvolvedor final.
Visualizar e alterar os nomes de cache padrão
A caixa de trabalho define os caches por cacheNames
:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Esses nomes de cache são construídos no formato de um prefixo, um nome e um sufixo, em que o nome é alterado com base no uso do cache.
<prefix>-<cache-id>-<suffix>
É possível mudar esses nomes padrão mudando todos ou alguns dos valores
transmitidos para 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);
O principal caso de uso do prefixo e do sufixo é que, se você usar o Workbox para vários projetos e a mesma porta de host local para cada projeto, definir um prefixo personalizado para cada módulo impedirá que os caches entrem em conflito entre si.
Declaração dos clientes
Alguns desenvolvedores querem publicar um novo service worker e fazer com que ele controle páginas da Web já abertas assim que for ativada, o que não acontecerá por padrão.
Se você quiser esse comportamento, o workbox-core
fornece um método auxiliar:
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();
O método clientsClaim()
em workbox-core
adiciona automaticamente um listener de eventos activate
ao service worker e, dentro dele, chama
self.clients.claim()
. Chamar self.clients.claim()
antes da ativação do service
worker atual levará a uma
exceção de ambiente de execução,
e o wrapper de workbox-core
ajuda a garantir que você o chame no momento certo.
O wrapper skipAguardando foi descontinuado
Antes do Workbox v6, os desenvolvedores também eram incentivados a usar o método skipWaiting()
de workbox-core
. No entanto, esse método ofereceu pouco valor além do que
os desenvolvedores receberiam se chamassem self.skipWaiting()
explicitamente.
Como o wrapper workbox-core
legado também registrou um manipulador de eventos install
em que self.skipWaiting()
foi chamado, o wrapper não se comportaria como esperado
se fosse chamado dentro de outro manipulador de eventos, como message
, depois que a instalação
já tivesse sido concluída.
Por esses motivos, o uso do skipWaiting()
do workbox-core
foi descontinuado, e os desenvolvedores
precisam começar a chamar self.skipWaiting()
diretamente. Ao contrário de
self.clients.claim()
, self.skipWaiting()
não vai gerar uma exceção se for chamado
no momento "errado". Portanto, não é necessário envolvê-lo em um manipulador de eventos.
Tipos
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
Parâmetros
Retorna
-
Promise<void>
CacheDidUpdateCallbackParam
Propriedades
-
cacheName
string
-
event
ExtendableEvent
-
newResponse
Resposta
-
oldResponse
Resposta opcional
-
request
Solicitação
-
state
MapLikeObject opcional
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
Parâmetros
Retorna
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Propriedades
-
cacheName
string
-
cachedResponse
Resposta opcional
-
event
ExtendableEvent
-
matchOptions
CacheQueryOptions opcional
-
request
Solicitação
-
state
MapLikeObject opcional
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
Parâmetros
Retorna
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Propriedades
-
event
ExtendableEvent
-
modo
string
-
params
Qualquer opção opcional
-
request
Solicitação
-
state
MapLikeObject opcional
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
Parâmetros
Retorna
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
resposta
Resposta
-
state
MapLikeObject opcional
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
Parâmetros
Retorna
-
Promise<void>
FetchDidFailCallbackParam
Propriedades
-
error
Erro
-
event
ExtendableEvent
-
originalRequest
Solicitação
-
request
Solicitação
-
state
MapLikeObject opcional
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
Parâmetros
Retorna
-
Promessa<Resposta>
FetchDidSucceedCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
resposta
Resposta
-
state
MapLikeObject opcional
HandlerCallbackOptions
Tipo enumerado
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
Parâmetros
Retorna
-
Promise<void>
HandlerDidCompleteCallbackParam
Propriedades
-
error
Erro opcional
-
event
ExtendableEvent
-
request
Solicitação
-
resposta
Resposta opcional
-
state
MapLikeObject opcional
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
Parâmetros
Retorna
-
Promessa<Resposta>
HandlerDidErrorCallbackParam
Propriedades
-
error
Erro
-
event
ExtendableEvent
-
request
Solicitação
-
state
MapLikeObject opcional
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
Parâmetros
Retorna
-
Promise<void>
HandlerDidRespondCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
resposta
Resposta opcional
-
state
MapLikeObject opcional
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
Parâmetros
Retorna
-
Promessa<Resposta>
HandlerWillRespondCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
resposta
Resposta
-
state
MapLikeObject opcional
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
Parâmetros
Retorna
-
Promise<void>
HandlerWillStartCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
state
MapLikeObject opcional
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
O callback "gerenciador" é invocado sempre que um Router
corresponde um URL/solicitação
a um Route
usando o RouteMatchCallback
. Esse callback do gerenciador precisa
retornar um Promise
que é resolvido com um Response
.
Se uma matriz ou um objeto não vazio for retornado pelo RouteMatchCallback
, ele
será transmitido como o argumento options.params
desse gerenciador.
Parâmetros
-
do modelo.
Retorna
-
Promessa<Resposta>
ManualHandlerCallbackOptions
Opções transmitidas para uma função ManualHandlerCallback
.
Propriedades
-
event
ExtendableEvent
-
request
string | Solicitação
MapLikeObject
PluginState
Usando um MapLikeObject
simples por enquanto, mas é possível estender/restringir isso
no futuro.
Tipo
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
Parâmetros
Retorna
-
Promessa<Solicitação>
RequestWillFetchCallbackParam
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
state
MapLikeObject opcional
RouteHandler
Um RouteHandlerCallback
ou um RouteHandlerObject
.
A maioria das APIs em workbox-routing
que aceitam gerenciadores de rota usa uma dessas opções.
Tipo enumerado
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
O callback "gerenciador" é invocado sempre que um Router
corresponde um URL/solicitação
a um Route
usando o RouteMatchCallback
. Esse callback do gerenciador precisa
retornar um Promise
que é resolvido com um Response
.
Se uma matriz ou um objeto não vazio for retornado pelo RouteMatchCallback
, ele
será transmitido como o argumento options.params
desse gerenciador.
Parâmetros
-
do modelo.
Retorna
-
Promessa<Resposta>
RouteHandlerCallbackOptions
Opções transmitidas para uma função RouteHandlerCallback
.
Propriedades
-
event
ExtendableEvent
-
params
string[] | MapLikeObject opcional
-
request
Solicitação
-
url
URL
RouteHandlerObject
Um objeto com um método handle
do tipo RouteHandlerCallback
.
Um objeto Route
pode ser criado com uma função RouteHandlerCallback
ou esse objeto RouteHandler
. A vantagem do RouteHandler
é que ele pode ser estendido, como é feito pelo pacote workbox-strategies
.
Propriedades
-
identificador
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
O callback "match" é usado para determinar se um Route
precisa ser aplicado a um
URL e uma solicitação específicos. Quando a correspondência ocorre em resposta a um evento de busca do cliente, o objeto event
também é fornecido. No entanto, como
o callback de correspondência pode ser invocado fora de um evento de busca, a lógica de correspondência
não presume que o objeto event
vai estar sempre disponível.
Se o callback de correspondência retornar um valor verdadeiro, o RouteHandlerCallback
da rota correspondente será invocado imediatamente. Se o valor retornado
for uma matriz ou um objeto não vazio, esse valor será definido no argumento options.params
do gerenciador.
Parâmetros
-
do modelo.
Retorna
-
qualquer um
RouteMatchCallbackOptions
Opções transmitidas para uma função RouteMatchCallback
.
Propriedades
-
event
ExtendableEvent
-
request
Solicitação
-
sameOrigin
boolean
-
url
URL
WorkboxPlugin
Objeto com propriedades opcionais de callback do ciclo de vida para as operações de busca e armazenamento em cache.
Propriedades
-
cacheDidUpdate
CacheDidUpdateCallback opcional
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback opcional
-
cacheWillUpdate
CacheWillUpdateCallback opcional
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback opcional
-
fetchDidFail
FetchDidFailCallback opcional
-
fetchDidSucceed
FetchDidSucceedCallback opcional
-
handlerDidComplete
HandlerDidCompleteCallback opcional
-
handlerDidError
HandlerDidErrorCallback opcional
-
handlerDidRespond
HandlerDidRespondCallback opcional
-
handlerWillRespond
HandlerWillRespondCallback opcional
-
handlerWillStart
HandlerWillStartCallback opcional
-
requestWillFetch
RequestWillFetchCallback opcional
WorkboxPluginCallbackParam
Propriedades
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Propriedades
cacheNames
Acessa os nomes de cache e o prefixo/sufixo atuais usados pelo Workbox.
cacheNames.precache
é usado para recursos pré-armazenados em cache,
cacheNames.googleAnalytics
é usado por workbox-google-analytics
para
armazenar analytics.js
, e cacheNames.runtime
é usado para todo o restante.
cacheNames.prefix
pode ser usado para recuperar apenas o valor do prefixo atual.
cacheNames.suffix
pode ser usado para recuperar apenas o valor do sufixo atual.
Tipo
objeto
Propriedades
-
googleAnalytics
string
-
pré-armazenar em cache
string
-
prefixo
string
-
runtime
string
-
sufixo
string
Métodos
clientsClaim()
workbox-core.clientsClaim()
Reivindique todos os clientes disponíveis quando o service worker
ficar ativo. Normalmente, é usado com skipWaiting()
.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
Permite que os desenvolvedores copiem uma resposta e modifiquem os valores headers
, status
ou statusText
(valores configuráveis por um objeto
[ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
no construtor).
Para modificar esses valores, transmita uma função como o segundo argumento. Essa
função é invocada com um único objeto com as propriedades de resposta
{headers, status, statusText}
. O valor de retorno dessa função será
usado como ResponseInit
para o novo Response
. Para alterar os valores, modifique os parâmetros transmitidos e retorne-os ou retorne um objeto totalmente novo.
Esse método é intencionalmente limitado a respostas da mesma origem, independente do CORS ter sido usado ou não.
Parâmetros
-
resposta
Resposta
-
modificador
função optional
O parâmetro
modifier
tem esta aparência:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
retorna
ResponseInit
-
Retorna
-
Promessa<Resposta>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Adiciona uma função ao conjunto de shareErrorCallbacks que será executada se houver um erro de cota.
Parâmetros
-
callback
Função
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
Modifica os nomes de cache padrão usados pelos pacotes do Workbox.
Os nomes de cache são gerados como <prefix>-<Cache Name>-<suffix>
.
Parâmetros
-
detalhes
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
Esse método foi descontinuado e será removido no Workbox v7.
Chamar self.skipAguardando() é equivalente e deve ser usado no lugar.