ядро рабочего ящика

Workbox построен по модульному принципу, что позволяет разработчикам выбирать части, которые они хотят использовать, не заставляя их загружать все в одном файле.

Однако между модулями существует дублирование: например, каждому модулю необходимо взаимодействовать с консолью, выдавать значимые ошибки и использовать сеть или кеш. Чтобы каждый модуль не реализовал одну и ту же логику, workbox-core содержит общий код, на который опирается каждый модуль.

Этот модуль действительно предоставляет некоторую функциональность разработчикам, но помимо уровней журналирования и кэширования, workbox-core предлагает внутреннюю логику каждому модулю, а не конечному разработчику.

Просмотр и изменение имен кэша по умолчанию

Workbox определяет свои кеши cacheNames :

import {cacheNames} from 'workbox-core';

console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);

Эти имена кэшей создаются в формате префикса, имени и суффикса, причем имя меняется в зависимости от использования кэша.

<prefix>-<cache-id>-<suffix>

Вы можете изменить эти имена по умолчанию, изменив все или некоторые значения, переданные в 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);

Основной вариант использования префикса и суффикса заключается в том, что если вы используете Workbox для нескольких проектов и используете один и тот же порт локального хоста для каждого проекта, установка собственного префикса для каждого модуля предотвратит конфликт кешей друг с другом.

Претензии клиентов

Некоторые разработчики хотят иметь возможность публиковать нового сервис-воркера и позволять ему контролировать уже открытые веб-страницы сразу после его активации, чего по умолчанию не происходит.

Если вам нужно такое поведение, workbox-core предоставляет вспомогательный метод:

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

Метод clientsClaim() в workbox-core автоматически добавляет прослушиватель событий activate к вашему сервис-воркеру и внутри него вызывает self.clients.claim() . Вызов self.clients.claim() до активации текущего сервисного работника приведет к исключению времени выполнения , а оболочка workbox-core помогает гарантировать, что вы вызовете его в нужное время.

Обертка SkipWaiting устарела.

До версии Workbox v6 разработчикам также предлагалось использовать метод skipWaiting() из workbox-core . Однако этот метод не принес никакой пользы, кроме той, которую получили бы разработчики, если бы они явно вызывали self.skipWaiting() .

Поскольку устаревшая оболочка workbox-core также зарегистрировала обработчик событий install , в котором был вызван self.skipWaiting() , оболочка не будет вести себя должным образом, если она будет вызвана внутри другого обработчика событий, например message , после того, как установка уже завершена.

По этим причинам skipWaiting() workbox-core устарела, и разработчикам следует переключиться на прямой вызов self.skipWaiting() . В отличие от self.clients.claim() , self.skipWaiting() не выдаст исключение, если оно вызвано в «неправильное» время, поэтому нет необходимости заключать его в обработчик событий.

Типы

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

Параметры

Возврат

  • Обещание<void>

CacheDidUpdateCallbackParam

Характеристики

  • имя кэша

    нить

  • событие

    РасширяемоеСобытие

  • новыйОтвет

    Ответ

  • старый ответ

    Ответ необязательный

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

Параметры

Возврат

  • Обещание<недействительно | Ответ>

CachedResponseWillBeUsedCallbackParam

Характеристики

  • имя кэша

    нить

  • кэшированный ответ

    Ответ необязательный

  • событие

    РасширяемоеСобытие

  • параметры совпадения

    CacheQueryOptions необязательно

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

Параметры

Возврат

  • Обещание<строка | Запрос>

CacheKeyWillBeUsedCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • режим

    нить

  • параметры

    любые дополнительные

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

Параметры

Возврат

  • Обещание<недействительно | Ответ>

CacheWillUpdateCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • ответ

    Ответ

  • состояние

    MapLikeObject необязательно

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

Параметры

Возврат

  • Обещание<void>

FetchDidFailCallbackParam

Характеристики

  • ошибка

    Ошибка

  • событие

    РасширяемоеСобытие

  • исходный запрос

    Запрос

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

Параметры

Возврат

  • Обещание<Ответ>

FetchDidSucceedCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • ответ

    Ответ

  • состояние

    MapLikeObject необязательно

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

Параметры

Возврат

  • Обещание<void>

HandlerDidCompleteCallbackParam

Характеристики

  • ошибка

    Ошибка необязательно

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • ответ

    Ответ необязательный

  • состояние

    MapLikeObject необязательно

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

Параметры

Возврат

  • Обещание<Ответ>

HandlerDidErrorCallbackParam

Характеристики

  • ошибка

    Ошибка

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

Параметры

Возврат

  • Обещание<void>

HandlerDidRespondCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • ответ

    Ответ необязательный

  • состояние

    MapLikeObject необязательно

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Параметры

Возврат

  • Обещание<Ответ>

HandlerWillRespondCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • ответ

    Ответ

  • состояние

    MapLikeObject необязательно

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

Параметры

Возврат

  • Обещание<void>

HandlerWillStartCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

Обратный вызов «обработчика» вызывается всякий раз, когда Router сопоставляет URL-адрес/запрос с Route через свой RouteMatchCallback . Этот обратный вызов обработчика должен возвращать Promise , который разрешается с помощью Response .

Если RouteMatchCallback возвращает непустой массив или объект, он будет передан в качестве аргумента options.params этого обработчика.

Параметры

Возврат

  • Обещание<Ответ>

ManualHandlerCallbackOptions

Параметры, передаваемые в функцию ManualHandlerCallback .

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    строка | Запрос

MapLikeObject

PluginState

На данный момент используется простой MapLikeObject , но в будущем можно расширить/ограничить его.

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

Параметры

Возврат

  • Обещание<Запрос>

RequestWillFetchCallbackParam

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • состояние

    MapLikeObject необязательно

RouteHandler

Либо RouteHandlerCallback , либо RouteHandlerObject . Большинство API в workbox-routing , которые принимают обработчики маршрутов, используют либо.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

Обратный вызов «обработчика» вызывается всякий раз, когда Router сопоставляет URL-адрес/запрос с Route через свой RouteMatchCallback . Этот обратный вызов обработчика должен возвращать Promise , который разрешается с помощью Response .

Если RouteMatchCallback возвращает непустой массив или объект, он будет передан в качестве аргумента options.params этого обработчика.

Параметры

Возврат

  • Обещание<Ответ>

RouteHandlerCallbackOptions

Параметры, передаваемые в функцию RouteHandlerCallback .

Характеристики

  • событие

    РасширяемоеСобытие

  • параметры

    строка[] | MapLikeObject необязательно

  • запрос

    Запрос

  • URL

    URL-адрес

RouteHandlerObject

Объект с методом handle типа RouteHandlerCallback .

Объект Route можно создать либо с помощью функции RouteHandlerCallback , либо с помощью этого объекта RouteHandler . Преимущество RouteHandler в том, что его можно расширить (как это делает пакет workbox-strategies ).

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

Обратный вызов «match» используется для определения того, должен ли Route применяться к определенному URL-адресу и запросу. Когда сопоставление происходит в ответ на событие выборки от клиента, также предоставляется объект event . Однако, поскольку обратный вызов сопоставления может быть вызван вне события выборки, логика сопоставления не должна предполагать, что объект event всегда будет доступен. Если обратный вызов сопоставления возвращает истинное значение, RouteHandlerCallback соответствующего маршрута будет вызван немедленно. Если возвращаемое значение является непустым массивом или объектом, это значение будет установлено в аргументе options.params обработчика.

Возврат

  • любой

RouteMatchCallbackOptions

Параметры, передаваемые в функцию RouteMatchCallback .

Характеристики

  • событие

    РасширяемоеСобытие

  • запрос

    Запрос

  • то же происхождение

    логическое значение

  • URL

    URL-адрес

WorkboxPlugin

Объект с дополнительными свойствами обратного вызова жизненного цикла для операций выборки и кэширования.

Характеристики

WorkboxPluginCallbackParam

Характеристики

Характеристики

cacheNames

Получите текущие имена кэшей и префикс/суффикс, используемые Workbox.

cacheNames.precache используется для предварительно кэшированных ресурсов, cacheNames.googleAnalytics используется workbox-google-analytics для хранения analytics.js , cacheNames.runtime используется для всего остального.

cacheNames.prefix можно использовать для получения только текущего значения префикса. cacheNames.suffix можно использовать для получения только текущего значения суффикса.

Тип

объект

Характеристики

  • Гугл Аналитика

    нить

  • предварительное кэширование

    нить

  • префикс

    нить

  • время выполнения

    нить

  • суффикс

    нить

Методы

clientsClaim()

workbox-core.clientsClaim()

Заявите права на всех доступных на данный момент клиентов, как только сервисный работник станет активным. Обычно это используется вместе с skipWaiting() .

copyResponse()

workbox-core.copyResponse(
  response: Response,
  modifier?: function,
)

Позволяет разработчикам копировать ответ и изменять его headers , значения status или statusText (значения, устанавливаемые через [ ResponseInit ] https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax объект в конструкторе). Чтобы изменить эти значения, передайте функцию в качестве второго аргумента. Эта функция будет вызвана с помощью одного объекта со свойствами ответа {headers, status, statusText} . Возвращаемое значение этой функции будет использоваться в качестве ResponseInit для нового Response . Чтобы изменить значения, либо измените переданные параметры и верните их, либо верните совершенно новый объект.

Этот метод намеренно ограничен ответами одного и того же происхождения, независимо от того, использовался ли CORS или нет.

Параметры

  • ответ

    Ответ

  • модификатор

    функция необязательна

    Параметр modifier выглядит так:

    (responseInit: ResponseInit) => ResponseInit

    • ответинит

      Респонсинит

    • возвращает

      Респонсинит

Возврат

  • Обещание<Ответ>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

Добавляет функцию в набор quotaErrorCallbacks, которая будет выполнена в случае ошибки квоты.

Параметры

  • перезвонить

    Функция

setCacheNameDetails()

workbox-core.setCacheNameDetails(
  details: PartialCacheNameDetails,
)

Изменяет имена кэшей по умолчанию, используемые пакетами Workbox. Имена кэшей генерируются как <prefix>-<Cache Name>-<suffix> .

Параметры

  • подробности

    Частичное имя кэшаПодробности

skipWaiting()

workbox-core.skipWaiting()

Этот метод устарел и будет удален в Workbox v7.

Вызов self.skipWaiting() эквивалентен и его следует использовать вместо этого.