Modüler olarak tasarlanan Workbox, geliştiricilerin her şeyi tek bir dosyada indirmeye zorlanmadan kullanmak istedikleri parçaları seçmelerine olanak tanır.
Ancak modüller arasında örtüşme vardır. Örneğin, her modülün konsolla etkileşime geçmesi, anlamlı hatalar vermesi ve ağ veya önbellekten yararlanması gerekir. Her modülün aynı mantığı uygulamasını önlemek için workbox-core, her modülün kullandığı bu ortak kodu içerir.
Bu modül geliştiricilere bazı işlevler sunar ancak günlük düzeyleri ve önbelleğe alma dışında workbox-core, son geliştirici yerine her modüle dahili mantık sunar.
Varsayılan Önbelleğe Alma Adlarını Görüntüleme ve Değiştirme
Workbox, önbelleğini cacheNames aracılığıyla tanımlar:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Bu önbelleğe alma adları, ön ek, ad ve son ek biçiminde oluşturulur. Ad, önbelleğin kullanımına göre değişir.
<prefix>-<cache-id>-<suffix>
setCacheNameDetails() işlevine iletilen değerlerin tümünü veya bir kısmını değiştirerek bu varsayılan adları değiştirebilirsiniz.
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);
Ön ek ve son ekin ana kullanım alanı, Workbox'u birden fazla proje için kullanıyorsanız ve her proje için aynı yerel ana makine bağlantı noktasını kullanıyorsanız her modül için özel bir ön ek ayarlayarak önbelleklerin birbiriyle çakışmasını önlemektir.
Müşterilerin Hak Talebi
Bazı geliştiriciler yeni bir hizmet çalışanı yayınlayıp etkinleştirildikten sonra zaten açık olan web sayfalarını kontrol etmesini ister. Bu, varsayılan olarak gerçekleşmez.
Bu davranışı istiyorsanız workbox-core yardımcı bir yöntem sağlar:
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();
workbox-core içindeki clientsClaim() yöntemi, hizmet işleyicinize otomatik olarak bir activate etkinlik dinleyicisi ekler ve bunun içinde self.clients.claim() çağrısını yapar. Mevcut hizmet işleyici etkinleşmeden önce self.clients.claim() çağrılırsa çalışma zamanında istisna oluşur. workbox-core sarmalayıcısı, bu işlevi doğru zamanda çağırmanıza yardımcı olur.
skipWaiting sarmalayıcısının desteği sonlandırıldı
Workbox 6 sürümünden önce geliştiricilerin workbox-core'daki skipWaiting()yöntemini kullanması da teşvik ediliyordu. Ancak bu yöntem, geliştiricilerin self.skipWaiting() öğesini açıkça çağırdığında elde edeceklerinin ötesinde çok az değer sunuyordu.
Eski workbox-core sarmalayıcı, self.skipWaiting()'nin çağrıldığı bir install etkinlik işleyicisi de kaydettiği için, yükleme tamamlandıktan sonra message gibi başka bir etkinlik işleyicinin içinde çağrılırsa sarmalayıcı beklendiği gibi davranmaz.
Bu nedenlerle, workbox-core'ın skipWaiting() özelliğinin desteği sonlandırılmıştır ve geliştiricilerin doğrudan self.skipWaiting()'i çağırmaya geçmesi gerekir. self.clients.claim()'ün aksine, self.skipWaiting() "yanlış" zamanda çağrılırsa istisna atmaz. Bu nedenle, self.skipWaiting()'u bir etkinlik işleyiciye sarmalamaya gerek yoktur.
Türler
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
): Promise<void>
Parametreler
İadeler
-
Promise<void>
CacheDidUpdateCallbackParam
Özellikler
-
cacheName
dize
-
etkinlik
ExtendableEvent
-
newResponse
Yanıt
-
oldResponse
Yanıt isteğe bağlı
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
): Promise<void | Response>
Parametreler
İadeler
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Özellikler
-
cacheName
dize
-
cachedResponse
Yanıt isteğe bağlı
-
etkinlik
ExtendableEvent
-
matchOptions
CacheQueryOptions isteğe bağlı
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
): Promise<string | Request>
Parametreler
İadeler
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
mod
dize
-
params
herhangi bir isteğe bağlı
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
): Promise<void | Response>
Parametreler
İadeler
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
gönderin
Yanıt
-
durum
MapLikeObject isteğe bağlı
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
): Promise<void>
Parametreler
İadeler
-
Promise<void>
FetchDidFailCallbackParam
Özellikler
-
hata
Hata
-
etkinlik
ExtendableEvent
-
originalRequest
İstek
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
): Promise<Response>
Parametreler
İadeler
-
Promise<Response>
FetchDidSucceedCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
gönderin
Yanıt
-
durum
MapLikeObject isteğe bağlı
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
): Promise<void>
Parametreler
İadeler
-
Promise<void>
HandlerDidCompleteCallbackParam
Özellikler
-
hata
Hata isteğe bağlı
-
etkinlik
ExtendableEvent
-
istek
İstek
-
gönderin
Yanıt isteğe bağlı
-
durum
MapLikeObject isteğe bağlı
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
): Promise<Response>
Parametreler
İadeler
-
Promise<Response>
HandlerDidErrorCallbackParam
Özellikler
-
hata
Hata
-
etkinlik
ExtendableEvent
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
): Promise<void>
Parametreler
İadeler
-
Promise<void>
HandlerDidRespondCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
gönderin
Yanıt isteğe bağlı
-
durum
MapLikeObject isteğe bağlı
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
): Promise<Response>
Parametreler
İadeler
-
Promise<Response>
HandlerWillRespondCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
gönderin
Yanıt
-
durum
MapLikeObject isteğe bağlı
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
): Promise<void>
Parametreler
İadeler
-
Promise<void>
HandlerWillStartCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
): Promise<Response>
"handler" geri çağırma işlevi, bir Router, RouteMatchCallback aracılığıyla bir Route URL'si/İsteği ile eşleştiğinde çağrılır. Bu işleyici geri çağırma işlevi, Response ile çözüldüğünde Promise döndürmelidir.
RouteMatchCallback tarafından boş olmayan bir dizi veya nesne döndürülürse bu işleyicinin options.params bağımsız değişkeni olarak iletilir.
Parametreler
-
seçenekler
İadeler
-
Promise<Response>
ManualHandlerCallbackOptions
ManualHandlerCallback işlevine iletilen seçenekler.
Özellikler
-
etkinlik
ExtendableEvent
-
istek
dize | İstek
MapLikeObject
PluginState
Şu anda düz bir MapLikeObject kullanıyoruz ancak gelecekte bu özelliği genişletebilir/kısıtlayabiliriz.
Tür
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
): Promise<Request>
Parametreler
İadeler
-
Promise<Request>
RequestWillFetchCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
RouteHandler
RouteHandlerCallback veya RouteHandlerObject.
workbox-routing içindeki rota işleyicilerini kabul eden API'lerin çoğu bu ikisini de alır.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
): Promise<Response>
"handler" geri çağırma işlevi, bir Router, RouteMatchCallback aracılığıyla bir Route URL'si/İsteği ile eşleştiğinde çağrılır. Bu işleyici geri çağırma işlevi, Response ile çözüldüğünde Promise döndürmelidir.
RouteMatchCallback tarafından boş olmayan bir dizi veya nesne döndürülürse bu işleyicinin options.params bağımsız değişkeni olarak iletilir.
Parametreler
-
seçenekler
İadeler
-
Promise<Response>
RouteHandlerCallbackOptions
RouteHandlerCallback işlevine iletilen seçenekler.
Özellikler
-
etkinlik
ExtendableEvent
-
params
MapLikeObject | string[] isteğe bağlı
-
istek
İstek
-
url
URL
RouteHandlerObject
RouteHandlerCallback türüne sahip bir handle yöntemi içeren nesne.
Route nesnesi, bir RouteHandlerCallback işlevi veya bu RouteHandler nesnesi kullanılarak oluşturulabilir. RouteHandler sınıfının avantajı, uzatılabilmesidir (workbox-strategies paketi tarafından yapıldığı gibi).
Özellikler
-
tanıtıcı
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
): any
"eşleşme" geri çağırma işlevi, belirli bir URL ve istek için Route'nin geçerli olup olmadığını belirlemek için kullanılır. Müşteriden gelen bir getirme etkinliğine yanıt olarak eşleşme gerçekleştiğinde event nesnesi de sağlanır. Ancak eşleşme geri çağırma işlevi, getirme etkinliğinin dışında çağrılabildiğinden eşleşme mantığı, event nesnesinin her zaman kullanılabileceğini varsaymaz.
Eşleşme geri çağırma işlevi doğru bir değer döndürürse eşleşen rotanın RouteHandlerCallback işlevi hemen çağrılır. Döndürülen değer boş olmayan bir dizi veya nesneyse bu değer işleyicinin options.params bağımsız değişkeninde ayarlanır.
Parametreler
-
seçenekler
İadeler
-
herhangi
RouteMatchCallbackOptions
RouteMatchCallback işlevine iletilen seçenekler.
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
sameOrigin
boolean
-
url
URL
WorkboxPlugin
Getirme ve önbelleğe alma işlemleri için isteğe bağlı yaşam döngüsü geri çağırma özelliklerine sahip bir nesne.
Özellikler
-
cacheDidUpdate
CacheDidUpdateCallback isteğe bağlı
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback isteğe bağlı
-
cacheWillUpdate
CacheWillUpdateCallback isteğe bağlı
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback isteğe bağlı
-
fetchDidFail
FetchDidFailCallback isteğe bağlı
-
fetchDidSucceed
FetchDidSucceedCallback isteğe bağlı
-
handlerDidComplete
HandlerDidCompleteCallback isteğe bağlı
-
handlerDidError
HandlerDidErrorCallback isteğe bağlı
-
handlerDidRespond
HandlerDidRespondCallback isteğe bağlı
-
handlerWillRespond
HandlerWillRespondCallback isteğe bağlı
-
handlerWillStart
HandlerWillStartCallback isteğe bağlı
-
requestWillFetch
RequestWillFetchCallback isteğe bağlı
WorkboxPluginCallbackParam
Özellikler
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Özellikler
cacheNames
Workbox tarafından kullanılan mevcut önbelleğe alma adlarını ve ön/son eklerinin alın.
cacheNames.precache önceden önbelleğe alınan öğeler için, cacheNames.googleAnalytics workbox-google-analytics tarafından analytics.js'i depolamak için, cacheNames.runtime ise diğer her şey için kullanılır.
cacheNames.prefix, yalnızca mevcut ön ek değerini almak için kullanılabilir.
cacheNames.suffix, yalnızca mevcut son ek değerini almak için kullanılabilir.
Tür
nesne
Özellikler
-
googleAnalytics
dize
-
önbelleğe alma
dize
-
önek
dize
-
çalışma zamanı
dize
-
sonek
dize
Yöntemler
clientsClaim()
workbox-core.clientsClaim(): void
Hizmet çalışanı etkin hale geldikten sonra mevcut istemciler için hak talebinde bulunun. Bu genellikle skipWaiting() ile birlikte kullanılır.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
): Promise<Response>
Geliştiricilerin bir yanıtı kopyalamasına ve headers, status veya statusText değerlerini (yapıcıdaki [ResponseInit]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax nesnesi aracılığıyla ayarlanabilen değerler) değiştirmesine olanak tanır.
Bu değerleri değiştirmek için ikinci bağımsız değişken olarak bir işlev gönderin. Bu işlev, {headers, status, statusText} yanıt özelliklerine sahip tek bir nesneyle çağrılır. Bu işlevin döndürdüğü değer, yeni Response için ResponseInit olarak kullanılır. Değerleri değiştirmek için iletilen parametreleri değiştirip döndürün veya tamamen yeni bir nesne döndürün.
Bu yöntem, CORS'un kullanılıp kullanılmadığına bakılmaksızın kasıtlı olarak aynı kaynak yanıtlarıyla sınırlıdır.
Parametreler
-
gönderin
Yanıt
-
değiştirici
işlev isteğe bağlı
modifierparametresi şu şekilde görünür:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
İadeler
-
Promise<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
): void
Kota hatası varsa yürütülecek bir işlevi quotaErrorCallbacks grubuna ekler.
Parametreler
-
callback
İşlev
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
): void
Workbox paketleri tarafından kullanılan varsayılan önbellek adlarını değiştirir.
Önbellek adları <prefix>-<Cache Name>-<suffix> olarak oluşturulur.
Parametreler
-
ayrıntılar
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting(): void
Bu yöntemin desteği sonlandırılmıştır ve Workbox 7 sürümünde kaldırılacaktır.
self.skipWaiting() çağrısı eşdeğerdir ve bunun yerine kullanılmalıdır.