Workbox ma konstrukcję modułową, dzięki czemu deweloperzy mogą wybierać elementy, których chcą użyć, bez wymuszania pobierania ich w jednym pliku.
Istnieją jednak różne moduły, np. każdy z nich musi komunikować się z konsolą, powodować generowanie znaczących błędów czy korzystanie z sieci lub pamięci podręcznej. Aby uniknąć stosowania w każdym module tej samej logiki, element workbox-core
zawiera ten wspólny kod, na którym opierają się poszczególne moduły.
Ten moduł udostępnia deweloperom niektóre funkcje, ale poza poziomami logów i pamięcią podręczną workbox-core
ma wewnętrzną logikę dla każdego modułu, a nie dla programisty końcowego.
Wyświetlanie i zmienianie domyślnych nazw pamięci podręcznej
Workbox określa 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);
Te nazwy pamięci podręcznej mają format prefiksu, nazwy i sufiksu, przy czym nazwa zmienia się w zależności od wykorzystania pamięci podręcznej.
<prefix>-<cache-id>-<suffix>
Te nazwy domyślne możesz zmienić, modyfikują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 przypadkiem użycia prefiksu i sufiksu jest to, że jeśli używasz Workbox w wielu projektach i używasz tego samego portu lokalnego hosta w każdym projekcie, ustawienie niestandardowego prefiksu dla każdego modułu zapobiegnie konfliktowi między pamięciami podręcznymi.
Deklaracja klientów
Niektórzy deweloperzy chcą mieć możliwość opublikowania nowego skryptu service worker i kontrolowania jego otwierania już stron internetowych od razu po aktywacji, co nie będzie przeprowadzane domyślnie.
Jeśli uważasz, że takie działanie Ci odpowiada, 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 skryptu service worker odbiornik activate
, a w nim wywołuje metodę self.clients.claim()
. Wywołanie self.clients.claim()
przed aktywacją bieżącego skryptu service worker prowadzi do wyjątku środowiska wykonawczego, a kod zdarzenia workbox-core
pomaga zapewnić jego wywołanie we właściwym czasie.
Otoka pomijania oczekujących została wycofana
Przed wprowadzeniem Workbox w wersji 6 deweloperzy byli też zachęcani do używania metody skipWaiting()
z usługi workbox-core
. Ta metoda dawała jednak niewielką wartość niż to, co deweloper otrzymałby po jawnym wywołaniu funkcji self.skipWaiting()
.
Ze względu na to, że starsza wersja kodu workbox-core
rejestrowała też moduł obsługi zdarzeń install
, w którym był wywoływany element self.skipWaiting()
, dlatego po zakończeniu instalacji kod nie zachowałby się zgodnie z oczekiwaniami, gdyby został wywołany w innym module obsługi zdarzeń, np. message
.
Z tego powodu interfejs skipWaiting()
(workbox-core
) został wycofany, a deweloperzy powinni przejść na bezpośrednie wywoływanie funkcji self.skipWaiting()
. W przeciwieństwie do funkcji self.clients.claim()
self.skipWaiting()
nie zgłasza wyjątku, jeśli zostanie wywołany w „niewłaściwym” momencie, więc nie ma potrzeby pakowania go w moduł obsługi zdarzeń.
Typy
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void>
CacheDidUpdateCallbackParam
Właściwości
-
cacheName
string,
-
event
ExtendableEvent
-
newResponse
Odpowiedź
-
oldResponse
Odpowiedź opcjonalna
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
Parametry
Zwroty
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Właściwości
-
cacheName
string,
-
cachedResponse
Odpowiedź opcjonalna
-
event
ExtendableEvent
-
matchOptions
CacheQueryOptions opcjonalnie
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Właściwości
-
event
ExtendableEvent
-
tryb
string,
-
params
dowolne opcjonalne
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
odpowiedź
Odpowiedź
-
state
MapLikeObject opcjonalnie
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void>
FetchDidFailCallbackParam
Właściwości
-
error
Błąd
-
event
ExtendableEvent
-
originalRequest
Prośba
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Obietnica<Response>
FetchDidSucceedCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
odpowiedź
Odpowiedź
-
state
MapLikeObject opcjonalnie
HandlerCallbackOptions
Typ wyliczeniowy
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void>
HandlerDidCompleteCallbackParam
Właściwości
-
error
Błąd opcjonalny
-
event
ExtendableEvent
-
Poproś
Prośba
-
odpowiedź
Odpowiedź opcjonalna
-
state
MapLikeObject opcjonalnie
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Obietnica<Response>
HandlerDidErrorCallbackParam
Właściwości
-
error
Błąd
-
event
ExtendableEvent
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void>
HandlerDidRespondCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
odpowiedź
Odpowiedź opcjonalna
-
state
MapLikeObject opcjonalnie
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Obietnica<Response>
HandlerWillRespondCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
odpowiedź
Odpowiedź
-
state
MapLikeObject opcjonalnie
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Promise<void>
HandlerWillStartCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
Wywołanie zwrotne „modułu obsługi” jest wywoływane za każdym razem, gdy Router
pasuje do adresu URL lub żądania do Route
za pomocą jego RouteMatchCallback
. Wywołanie zwrotne modułu obsługi powinno zwracać błąd Promise
, który kończy się wyrażeniem Response
.
Jeśli RouteMatchCallback
zwróci niepustą tablica lub obiekt, zostanie on przekazany jako argument options.params
modułu obsługi.
Parametry
Zwroty
-
Obietnica<Response>
ManualHandlerCallbackOptions
Opcje przekazywane do funkcji ManualHandlerCallback
.
Właściwości
-
event
ExtendableEvent
-
Poproś
ciąg znaków | Żądanie
MapLikeObject
PluginState
Na razie jest używany prosty format MapLikeObject
, ale w przyszłości możemy go rozszerzyć lub ograniczyć.
Typ
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
Parametry
-
parametr
Zwroty
-
Obietnica<Request>
RequestWillFetchCallbackParam
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
state
MapLikeObject opcjonalnie
RouteHandler
Parametr RouteHandlerCallback
lub RouteHandlerObject
.
Większość interfejsów API w workbox-routing
, które akceptują moduły obsługi tras, używa jednego lub drugiego.
Typ wyliczeniowy
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
Wywołanie zwrotne „modułu obsługi” jest wywoływane za każdym razem, gdy Router
pasuje do adresu URL lub żądania do Route
za pomocą jego RouteMatchCallback
. Wywołanie zwrotne modułu obsługi powinno zwracać błąd Promise
, który kończy się wyrażeniem Response
.
Jeśli RouteMatchCallback
zwróci niepustą tablica lub obiekt, zostanie on przekazany jako argument options.params
modułu obsługi.
Parametry
Zwroty
-
Obietnica<Response>
RouteHandlerCallbackOptions
Opcje przekazywane do funkcji RouteHandlerCallback
.
Właściwości
-
event
ExtendableEvent
-
params
string[] | MapLikeObject opcjonalnie
-
Poproś
Prośba
-
URL
URL
RouteHandlerObject
Obiekt z metodą handle
typu RouteHandlerCallback
.
Obiekt Route
można utworzyć za pomocą funkcji RouteHandlerCallback
lub tego obiektu RouteHandler
. Zaletą RouteHandler
jest to, że można ją przedłużyć (tak jak w przypadku pakietu workbox-strategies
).
Właściwości
-
nick
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
Wywołanie zwrotne „pasujące” pozwala określić, czy w przypadku określonego adresu URL i żądania powinna zostać zastosowana zasada Route
. Jeśli dopasowanie zachodzi w odpowiedzi na zdarzenie pobierania z klienta, udostępniany jest też obiekt event
. Ponieważ jednak wywołanie zwrotne dopasowania można wywołać poza zdarzeniem pobierania, logika dopasowania nie powinna zakładać, że obiekt event
będzie zawsze dostępny.
Jeśli dopasowane wywołanie zwrotne zwróci wartość prawda, RouteHandlerCallback
pasującej trasy zostanie natychmiast wywołana. Jeśli zwrócona wartość nie jest pustą tablicą lub obiektem, zostanie ona ustawiona na argumencie options.params
modułu obsługi.
Parametry
Zwroty
-
Dowolne
RouteMatchCallbackOptions
Opcje przekazywane do funkcji RouteMatchCallback
.
Właściwości
-
event
ExtendableEvent
-
Poproś
Prośba
-
sameOrigin
boolean
-
URL
URL
WorkboxPlugin
Obiekt z opcjonalnymi właściwościami wywołania zwrotnego cyklu życia dla operacji pobierania i pamięci podręcznej.
Właściwości
-
cacheDidUpdate
CacheDidUpdateCallback opcjonalnie
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback opcjonalnie
-
cacheWillUpdate
CacheWillUpdateCallback opcjonalnie
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback opcjonalnie
-
fetchDidFail
FetchDidFailCallback opcjonalnie
-
fetchDidSucceed
FetchDidSucceedCallback opcjonalnie
-
handlerDidComplete
HandlerDidCompleteCallback opcjonalnie
-
handlerDidError
HandlerDidErrorCallback opcjonalnie
-
handlerDidRespond
HandlerDidRespondCallback opcjonalnie
-
handlerWillRespond
HandlerWillRespondCallback opcjonalnie
-
handlerWillStart
HandlerWillStartCallback opcjonalnie
-
requestWillFetch
RequestWillFetchCallback opcjonalnie
WorkboxPluginCallbackParam
Właściwości
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Właściwości
cacheNames
Pobierz bieżące nazwy pamięci podręcznej oraz prefiks/sufiks używany przez Workbox.
Zasób cacheNames.precache
jest używany na potrzeby zasobów wstępnie zapisanych w pamięci podręcznej, cacheNames.googleAnalytics
– workbox-google-analytics
do przechowywania analytics.js
, a cacheNames.runtime
do wszystkich pozostałych danych.
Za pomocą cacheNames.prefix
można pobrać tylko bieżącą wartość prefiksu.
Za pomocą cacheNames.suffix
można pobrać tylko bieżącą wartość sufiksu.
Typ
obiekt
Właściwości
-
googleAnalytics
string,
-
zapisywanie w pamięci podręcznej
string,
-
prefiks
string,
-
środowisko wykonawcze
string,
-
przyrostek
string,
Metody
clientsClaim()
workbox-core.clientsClaim()
Żądanie wszystkich obecnie dostępnych klientów, gdy skrypt service worker stanie się aktywny. Ta opcja jest zwykle używana w połączeniu z zasadą skipWaiting()
.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
Umożliwia programistom kopiowanie odpowiedzi i modyfikowanie jej wartości headers
, status
lub statusText
(wartości ustawianych za pomocą obiektu [ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
w konstruktorze).
Aby zmodyfikować te wartości, przekaż funkcję jako drugi argument. Funkcja ta zostanie wywołana z pojedynczym obiektem z właściwościami odpowiedzi {headers, status, statusText}
. Wartość zwrócona przez tę funkcję będzie używana jako wartość ResponseInit
w nowym elemencie Response
. Aby zmienić wartości, zmodyfikuj przekazane parametry i zwróć je lub zwróć zupełnie nowy obiekt.
Ta metoda jest celowo ograniczona do odpowiedzi z tej samej domeny niezależnie od tego, czy użyto CORS.
Parametry
-
odpowiedź
Odpowiedź
-
modyfikator
funkcja opcjonalnie
Parametr
modifier
wygląda tak:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
Zwroty
-
Obietnica<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Dodaje funkcję do zbioru wywołań totalErrorCallbacks, które zostaną wykonane w przypadku wystąpienia błędu limitu.
Parametry
-
wywołanie zwrotne
Funkcja
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
Modyfikuje 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 z Workbox w wersji 7.
Wywołanie Self.skipwaiting() jest równoważne i powinno zostać użyte zamiast tego.