Rdzeń skrzynki roboczej

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()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,
)

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,
)

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,
)

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,
)

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,
)

Zwroty

  • Obietnice<Odpowiedź>

FetchDidSucceedCallbackParam

Właściwości

  • event

    ExtendableEvent

  • żądanie

    Żądanie

  • odpowiedź

    Odpowiedź

  • stan

    MapLikeObject opcjonalnie

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

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,
)

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,
)

Zwroty

  • Obietnica<void>

HandlerDidRespondCallbackParam

Właściwości

  • event

    ExtendableEvent

  • żądanie

    Żądanie

  • odpowiedź

    Odpowiedź opcjonalna

  • stan

    MapLikeObject opcjonalnie

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Zwroty

  • Obietnice<Odpowiedź>

HandlerWillRespondCallbackParam

Właściwości

  • event

    ExtendableEvent

  • żądanie

    Żądanie

  • odpowiedź

    Odpowiedź

  • stan

    MapLikeObject opcjonalnie

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

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.

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ę.

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

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.

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.

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

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

WorkboxPluginCallbackParam

Właściwości

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.