Workbox został zaprojektowany jako modułowy, co pozwala deweloperom wybierać elementy, których chcą użyć, bez konieczności pobierania wszystkiego w jednym pliku.
Poszczególne moduły się jednak nakładają. Na przykład każdy moduł musi być w stanie wchodzić w interakcję z konsolą, generować istotne błędy i korzystać z sieci lub pamięci podręcznej. Aby uniknąć implementowania tej samej logiki w każdym module, element workbox-core
zawiera wspólny kod, na którym opierają się wszystkie moduły.
Ten moduł udostępnia deweloperom pewne funkcje, ale oprócz poziomów logowania i buforowania workbox-core
udostępnia logikę wewnętrzną dla każdego modułu, a nie dla końcowego dewelopera.
Wyświetlanie i zmienianie domyślnych nazw pamięci podręcznej
Workbox definiuje swoje pamięci podręczne za pomocą cacheNames
:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Nazwy te są tworzone w formacie prefiksu, nazwy i sufiksu, przy czym nazwa zmienia się w zależności od sposobu użycia pamięci podręcznej.
<prefix>-<cache-id>-<suffix>
Możesz zmienić te domyślne nazwy, zmieniając wszystkie lub niektóre wartości przekazywane do 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);
Głównym zastosowaniem prefiksów i sufików jest sytuacja, w której używasz Workboxa w kilku projektach i w każdym z nich tego samego portu localhost. Ustawienie niestandardowego prefiksu dla każdego modułu zapobiegnie konfliktom między pamięciami podręcznymi.
Deklaracja klienta
Niektórzy deweloperzy chcą mieć możliwość publikowania nowych usług workera i sterowania już otwartymi stronami internetowymi zaraz po ich aktywacji, co nie będzie miało miejsca domyślnie.
Jeśli chcesz uzyskać takie działanie, workbox-core
udostępnia metodę pomocniczą:
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();
Metoda clientsClaim()
w workbox-core
automatycznie dodaje do Twojego pracownika usługi detektor zdarzenia activate
, a w jego ramach wywołuje funkcję self.clients.claim()
. Wywołanie funkcji self.clients.claim()
przed aktywacją bieżącego workera usługi spowoduje wyjątek czasu wykonywania, a opakowanie workbox-core
pomoże Ci wywołać tę funkcję we właściwym momencie.
Otoczka skipWaiting została wycofana.
Przed wydaniem Workboxa w wersji 6 deweloperzy byli też zachęcani do korzystania z metody skipWaiting()
z workbox-core
. Ta metoda nie oferowała jednak żadnych dodatkowych korzyści poza tym, co deweloperzy uzyskaliby, wywołując funkcję self.skipWaiting()
wprost.
Ponieważ starszy opakowanie workbox-core
zarejestrował też moduł obsługi zdarzenia install
, w którym wywoływane jest self.skipWaiting()
, nie zachowywał się ono zgodnie z oczekiwaniami, gdy wywołano go w ramach innego modułu obsługi zdarzenia, takiego jak message
, po zakończeniu instalacji.
Z tych powodów funkcja workbox-core
skipWaiting()
została wycofana. Deweloperzy powinni zamiast niej bezpośrednio wywoływać funkcję self.skipWaiting()
. W przeciwieństwie do funkcji self.clients.claim()
funkcja self.skipWaiting()
nie wyrzuca wyjątku, jeśli zostanie wywołana w „niewłaściwym” momencie, więc nie trzeba jej umieszczać w obejmniku sterownika zdarzenia.
Typy
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void>
CacheDidUpdateCallbackParam
Właściwości
-
cacheName
ciąg znaków
-
event
ExtendableEvent
-
newResponse
Odpowiedź
-
oldResponse
Odpowiedź opcjonalna
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void | Response>
CachedResponseWillBeUsedCallbackParam
Właściwości
-
cacheName
ciąg znaków
-
cachedResponse
Odpowiedź opcjonalna
-
event
ExtendableEvent
-
matchOptions
CacheQueryOptions opcjonalnie
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
Parametry
Zwroty
-
Obietnica<string | Request>
CacheKeyWillBeUsedCallbackParam
Właściwości
-
event
ExtendableEvent
-
tryb
ciąg znaków
-
params
dowolne opcjonalne
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void | Response>
CacheWillUpdateCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź
-
stan
MapLikeObject opcjonalnie
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void>
FetchDidFailCallbackParam
Właściwości
-
błąd
Błąd
-
event
ExtendableEvent
-
originalRequest
Żądanie
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
Parametry
Zwroty
-
Obietnice<Odpowiedź>
FetchDidSucceedCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź
-
stan
MapLikeObject opcjonalnie
HandlerCallbackOptions
Typ wyliczeniowy
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void>
HandlerDidCompleteCallbackParam
Właściwości
-
błąd
Błąd opcjonalny
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź opcjonalna
-
stan
MapLikeObject opcjonalnie
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
Parametry
Zwroty
-
Obietnice<Odpowiedź>
HandlerDidErrorCallbackParam
Właściwości
-
błąd
Błąd
-
event
ExtendableEvent
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void>
HandlerDidRespondCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź opcjonalna
-
stan
MapLikeObject opcjonalnie
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
Parametry
Zwroty
-
Obietnice<Odpowiedź>
HandlerWillRespondCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź
-
stan
MapLikeObject opcjonalnie
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
Parametry
Zwroty
-
Obietnica<void>
HandlerWillStartCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
Funkcja „handler” jest wywoływana za każdym razem, gdy Router
pasuje do adresu URL/żądania do Route
za pomocą RouteMatchCallback
. Ten wywoływany z powrotem obciążnik powinien zwracać wartość Promise
, która jest równoważna wartości Response
.
Jeśli funkcja RouteMatchCallback
zwróci niepusty tablicę lub obiekt, zostanie on przekazany jako argument options.params
tego modułu obsługi.
Parametry
Zwroty
-
Obietnice<Odpowiedź>
ManualHandlerCallbackOptions
opcje przekazywane do funkcji ManualHandlerCallback
,
Właściwości
-
event
ExtendableEvent
-
żądanie
ciąg znaków | Request
MapLikeObject
PluginState
Na razie używamy prostego MapLikeObject
, ale w przyszłości możemy rozszerzyć lub ograniczyć tę funkcję.
Typ
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
Parametry
Zwroty
-
Promise<Request>
RequestWillFetchCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
RouteHandler
Może to być RouteHandlerCallback
lub RouteHandlerObject
.
Większość interfejsów API w workbox-routing
, które obsługują moduły obsługi trasy, przyjmuje jeden z tych formatów.
Typ wyliczeniowy
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
Funkcja „handler” jest wywoływana za każdym razem, gdy Router
pasuje do adresu URL/żądania do Route
za pomocą RouteMatchCallback
. Ten moduł obsługi powinien zwracać Promise
, który zwraca Response
.
Jeśli funkcja RouteMatchCallback
zwróci niepusty tablicę lub obiekt, zostanie on przekazany jako argument options.params
tego modułu obsługi.
Parametry
Zwroty
-
Obietnice<Odpowiedź>
RouteHandlerCallbackOptions
opcje przekazywane do funkcji RouteHandlerCallback
,
Właściwości
-
event
ExtendableEvent
-
params
string[] | MapLikeObject opcjonalnie
-
żądanie
Żądanie
-
URL
URL
RouteHandlerObject
Obiekt z metodą handle
typu RouteHandlerCallback
.
Obiekt Route
można utworzyć za pomocą funkcji RouteHandlerCallback
lub obiektu RouteHandler
. Zaletą RouteHandler
jest to, że można go rozszerzyć (tak jak w przypadku pakietu workbox-strategies
).
Właściwości
-
nick
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
W wywołaniu zwrotnym „match” określa się, czy Route
ma być stosowany w przypadku danego adresu URL i żądania. Gdy dopasowanie następuje w odpowiedzi na zdarzenie pobierania z klienta, przekazywany jest też obiekt event
. Ponieważ jednak wywołanie zwrotne dopasowania może być wywoływane poza zdarzeniem pobierania, logika dopasowywania nie powinna zakładać, że obiekt event
będzie zawsze dostępny.
Jeśli wywołanie funkcji z parametrem dopasowania zwraca wartość logiczną PRAWDA, odpowiednia trasa RouteHandlerCallback
zostanie wywołana natychmiast. Jeśli zwrócona wartość jest niepustym tablicą lub obiektem, zostaje ona ustawiona w argumencie options.params
.
Parametry
Zwroty
-
każdy
RouteMatchCallbackOptions
opcje przekazywane do funkcji RouteMatchCallback
,
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
sameOrigin
wartość logiczna
-
URL
URL
WorkboxPlugin
Obiekt z opcjonalnymi właściwościami wywołania zwrotnego cyklu życia do operacji pobierania i zapisywania w pamięci podręcznej.
Właściwości
-
cacheDidUpdate
CacheDidUpdateCallback opcjonalny
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback opcjonalnie
-
cacheWillUpdate
CacheWillUpdateCallback opcjonalny
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback opcjonalnie
-
fetchDidFail
FetchDidFailCallback opcjonalny
-
fetchDidSucceed
FetchDidSucceedCallback opcjonalny
-
handlerDidComplete
HandlerDidCompleteCallback opcjonalny
-
handlerDidError
HandlerDidErrorCallback opcjonalny
-
handlerDidRespond
HandlerDidRespondCallback opcjonalny
-
handlerWillRespond
HandlerWillRespondCallback opcjonalny
-
handlerWillStart
HandlerWillStartCallback opcjonalnie
-
requestWillFetch
RequestWillFetchCallback opcjonalny
WorkboxPluginCallbackParam
Właściwości
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Właściwości
cacheNames
Pobierz aktualne nazwy pamięci podręcznej i prefiks/sufiks używane przez Workbox.
cacheNames.precache
służy do zasobów z cache'u, cacheNames.googleAnalytics
służy do przechowywania zasobów analytics.js
, a cacheNames.runtime
do wszystkiego innego.workbox-google-analytics
cacheNames.prefix
można użyć do pobrania tylko bieżącej wartości prefiksu.
cacheNames.suffix
można użyć do pobrania tylko bieżącej wartości przyrostka.
Typ
Obiekt
Właściwości
-
googleAnalytics
ciąg znaków
-
pamięć podręczna
ciąg znaków
-
prefiks
ciąg znaków
-
środowisko wykonawcze
ciąg znaków
-
przyrostek
ciąg znaków
Metody
clientsClaim()
workbox-core.clientsClaim()
Po aktywowaniu usługi możesz przejąć wszystkich dostępnych klientów. Jest on zwykle używany w połączeniu z właściwością skipWaiting()
.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
Umożliwia deweloperom kopiowanie odpowiedzi i modyfikowanie jej wartości headers
, status
lub statusText
(wartości te można ustawić za pomocą obiektu [ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
w konstruktorze).
Aby zmodyfikować te wartości, jako drugi argument podaj funkcję. Ta funkcja zostanie wywołana z jednym obiektem z właściwościami odpowiedzi {headers, status, statusText}
. Wartość zwracana przez tę funkcję będzie używana jako ResponseInit
dla nowego elementu Response
. Aby zmienić wartości, zmodyfikuj przekazane parametry i zwracaj je lub zwracaj zupełnie nowy obiekt.
Ta metoda jest celowo ograniczona do odpowiedzi z tego samego źródła, niezależnie od tego, czy użyto CORS.
Parametry
-
odpowiedź
Odpowiedź
-
modyfikator
function opcjonalny
Parametr
modifier
ma postać:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
Zwroty
-
Obietnice<Odpowiedź>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Dodaje funkcję do zbioru funkcji quotaErrorCallbacks, która zostanie wykonana w przypadku błędu dotyczącego limitu.
Parametry
-
wywołanie zwrotne
Funkcja
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
Zmienia domyślne nazwy pamięci podręcznej używane przez pakiety Workbox.
Nazwy pamięci podręcznej są generowane jako <prefix>-<Cache Name>-<suffix>
.
Parametry
-
szczegóły
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
Ta metoda jest wycofana i zostanie usunięta w wersji 7 Workboxa.
Wywołanie self.skipWaiting() jest równoważne i powinno być używane zamiast tego.