Rdzeń skrzynki roboczej

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

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

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

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

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

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

Zwroty

  • Obietnica<Response>

FetchDidSucceedCallbackParam

Właściwości

  • event

    ExtendableEvent

  • Poproś

    Prośba

  • odpowiedź

    Odpowiedź

  • state

    MapLikeObject opcjonalnie

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

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

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

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

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

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.

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

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

Parametry

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.

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.

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

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

WorkboxPluginCallbackParam

Właściwości

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