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 przyrostka, 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 sufiksó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.
roszczenia klientów;
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. Jednak ta metoda nie oferowała większej wartości niż to, co deweloperzy uzyskaliby, wywołując funkcję self.skipWaiting() wprost.
Stary moduł opakowania workbox-core zarejestrował też moduł obsługi zdarzenia install, w którym wywoływane jest self.skipWaiting(). Gdyby moduł opakowania został wywołany w ramach innego modułu obsługi zdarzenia, np. message, po zakończeniu instalacji, nie zachowywałby się zgodnie z oczekiwaniami.
Z tych powodów funkcja workbox-core skipWaiting() została wycofana. Deweloperzy powinni 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 detektorze zdarzeń.
Typy
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
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,
): Promise<void | Response>
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,
): Promise<string | Request>
Parametry
Zwroty
-
Promise<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,
): Promise<void | Response>
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,
): Promise<void>
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,
): Promise<Response>
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,
): Promise<void>
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,
): Promise<Response>
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,
): Promise<void>
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,
): Promise<Response>
Parametry
Zwroty
-
Obietnice<Odpowiedź>
HandlerWillRespondCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
odpowiedź
Odpowiedź
-
stan
MapLikeObject opcjonalnie
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Parametry
Zwroty
-
Obietnica<void>
HandlerWillStartCallbackParam
Właściwości
-
event
ExtendableEvent
-
żądanie
Żądanie
-
stan
MapLikeObject opcjonalnie
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
Funkcja „handler” jest wywoływana za każdym razem, gdy Router pasuje do adresu URL/żądania do Route za pomocą RouteMatchCallback. Wywołanie zwrotne tego modułu obsługi powinno 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 tekstowy | 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,
): Promise<Request>
Parametry
Zwroty
-
Obietnica<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ą przetwarzanie ścieżek, przyjmuje jeden z tych formatów.
Typ wyliczeniowy
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
Funkcja „handler” jest wywoływana za każdym razem, gdy Router pasuje do adresu URL/żądania do Route za pomocą RouteMatchCallback. Wywołanie zwrotne tego modułu obsługi powinno 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ź>
RouteHandlerCallbackOptions
opcje przekazywane do funkcji RouteHandlerCallback,
Właściwości
-
event
ExtendableEvent
-
params
MapLikeObject | string[] 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,
): any
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 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(): void
Po aktywowaniu pracownika usługi możesz przypisać do niego wszystkich obecnie 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,
): Promise<Response>
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
modifierma postać:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
Zwroty
-
Obietnice<Odpowiedź>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Dodaje funkcję do zbioru funkcji quotaErrorCallbacks, która zostanie wykonana w przypadku błędu dotyczącego limitu.
Parametry
-
callback
Funkcja
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
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(): void
Ta metoda jest wycofana i zostanie usunięta w wersji 7 Workboxa.
Wywołanie self.skipWaiting() jest równoważne i należy go używać zamiast self.wait().