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 önbellekleri birbirinin çatış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 de kullanmaları önerilmiştir. 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,
)
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,
)
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,
)
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,
)
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,
)
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,
)
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,
)
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,
)
Parametreler
İadeler
-
Promise<Response>
HandlerDidErrorCallbackParam
Özellikler
-
hata
Hata
-
etkinlik
ExtendableEvent
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
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,
)
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,
)
Parametreler
İadeler
-
Promise<void>
HandlerWillStartCallbackParam
Özellikler
-
etkinlik
ExtendableEvent
-
istek
İstek
-
durum
MapLikeObject isteğe bağlı
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
"handler" geri çağırma işlevi, bir Router
, RouteMatchCallback
aracılığıyla bir Route
URL'si/isteğiyle 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,
)
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,
)
"handler" geri çağırma işlevi, bir Router
, RouteMatchCallback
aracılığıyla bir Route
URL'si/isteğiyle 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
string[] | MapLikeObject 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,
)
"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 oluştuğunda event
nesnesi de sağlanır. Ancak eşleşme geri çağırma işlevi bir getirme etkinliğinin dışında çağrılabildiğinden, eşleştirme 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 ek bilgilerini 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()
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,
)
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ı
modifier
parametresi şu şekilde görünür:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
İadeler
-
Promise<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Kota hatası varsa yürütülecek bir işlevi quotaErrorCallbacks grubuna ekler.
Parametreler
-
geri çağırma
İşlev
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
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()
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.