Workbox modüler olacak şekilde tasarlanmıştır. Bu sayede geliştiriciler, her şeyi tek bir dosyaya indirmek zorunda kalmadan kullanmak istedikleri parçaları seçebilir.
Ancak modüller arasında örtüşme vardır. Örneğin, her bir modülün konsolla etkileşim kurması, 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ığı şu ortak kodu içerir.
Bu modül geliştiricilere bazı işlevler sunar ancak günlük düzeyleri ve önbelleğe almanın ötesinde workbox-core
, son geliştirici yerine her modül için dahili mantık sunar.
Varsayılan Önbellek Adlarını Görüntüleme ve Değiştirme
Workbox, önbelleklerini cacheNames
aracılığıyla tanımlar:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Bu önbellek adları, ön ek, ad ve sonek biçiminde oluşturulur. Buradaki ad, önbellek kullanımına göre değişir.
<prefix>-<cache-id>-<suffix>
setCacheNameDetails()
yöntemine iletilen değerlerin tamamı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);
Önek ve son ekin ana kullanım alanı, birden fazla proje için Çalışma Kutusu kullanıyorsanız ve her proje için aynı localhost bağlantı noktasını kullanıyorsanız her modül için özel bir önek ayarlamak, önbelleklerin birbiriyle çakışmasını önler.
Müşteri Hak Talebi
Bazı geliştiriciler, yeni bir hizmet çalışanı yayınlayabilmek ve etkinleştiği anda açık web sayfalarını kontrol etmesini sağlamak ister. Bu durum varsayılan olarak gerçekleşmez.
Bu davranışı istiyorsanız workbox-core
yardımcı bir yöntem sunmaktadır:
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
öğesindeki clientsClaim()
yöntemi, hizmet çalışanınıza otomatik olarak bir activate
etkinlik işleyici ekler ve bunun içine self.clients.claim()
çağrısı yapar. Mevcut hizmet çalışanı etkinleştirilmeden önce self.clients.claim()
çağrılması, çalışma zamanı istisnasına neden olur ve workbox-core
sarmalayıcısı, çağrıyı doğru zamanda çağırmanızı sağlar.
Atlama bekleme sarmalayıcısı kullanımdan kaldırıldı
Workbox v6'dan önceki sürümlerde, geliştiricilere workbox-core
tarafından sağlanan skipWaiting()
yöntemini kullanmaları da teşvik ediliyordu. Ancak bu yöntem, geliştiricilerin self.skipWaiting()
özelliğini açıkça çağırdıkları takdirde elde edecekleri değerden çok daha fazlasını sunmuştur.
Eski workbox-core
sarmalayıcısı, self.skipWaiting()
öğesinin çağrıldığı bir install
etkinlik işleyicisi de kaydettiğinden, yükleme tamamlandıktan sonra sarmalayıcı message
gibi başka bir etkinlik işleyicinin içinde çağrılsaydı beklendiği gibi davranmaz.
Bu nedenlerden dolayı, workbox-core
skipWaiting()
desteği sonlandırılmıştır ve geliştiriciler doğrudan self.skipWaiting()
çağrısına geçmelidir. self.clients.claim()
özelliğinden farklı olarak, self.skipWaiting()
"yanlış" zamanda çağrılırsa istisna oluşturmaz. Bu nedenle, öğenin bir etkinlik işleyici içine sarmalanmasına gerek yoktur.
Türler
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void>
CacheDidUpdateCallbackParam
Özellikler
-
cacheName
dize
-
event
ExtendableEvent
-
newResponse
Yanıt
-
oldResponse
Yanıt isteğe bağlı
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Özellikler
-
cacheName
dize
-
cachedResponse
Yanıt isteğe bağlı
-
event
ExtendableEvent
-
matchOptions
CacheQueryOptions isteğe bağlı
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Özellikler
-
event
ExtendableEvent
-
mod
dize
-
params
isteğe bağlı
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
yanıt
Yanıt
-
state
MapLikeObject isteğe bağlı
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void>
FetchDidFailCallbackParam
Özellikler
-
hata
Hata
-
event
ExtendableEvent
-
originalRequest
İstek
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
Parametreler
İlerlemeler
-
Söz<Yanıt>
FetchDidSucceedCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
yanıt
Yanıt
-
state
MapLikeObject isteğe bağlı
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void>
HandlerDidCompleteCallbackParam
Özellikler
-
hata
Hata isteğe bağlı
-
event
ExtendableEvent
-
istek
İstek
-
yanıt
Yanıt isteğe bağlı
-
state
MapLikeObject isteğe bağlı
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
Parametreler
İlerlemeler
-
Söz<Yanıt>
HandlerDidErrorCallbackParam
Özellikler
-
hata
Hata
-
event
ExtendableEvent
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void>
HandlerDidRespondCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
yanıt
Yanıt isteğe bağlı
-
state
MapLikeObject isteğe bağlı
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
Parametreler
İlerlemeler
-
Söz<Yanıt>
HandlerWillRespondCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
yanıt
Yanıt
-
state
MapLikeObject isteğe bağlı
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
Parametreler
İlerlemeler
-
Promise<void>
HandlerWillStartCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
Bir Router
, bir URL'yi/İsteği RouteMatchCallback
aracılığıyla bir Route
ile eşleştirdiğinde "işleyici" geri çağırması çağrılır. Bu işleyici geri çağırması, Response
ile çözümlenen bir Promise
döndürmelidir.
RouteMatchCallback
tarafından boş olmayan bir dizi veya nesne döndürülürse söz konusu dizi veya nesne, bu işleyicinin options.params
bağımsız değişkeni olarak aktarılır.
Parametreler
-
seçenekler
İlerlemeler
-
Söz<Yanıt>
ManualHandlerCallbackOptions
Seçenekler, bir ManualHandlerCallback
işlevine iletildi.
Özellikler
-
event
ExtendableEvent
-
istek
dize | İstek
MapLikeObject
PluginState
Şimdilik basit bir MapLikeObject
kullanılıyor ancak ileride bu kapsamın genişletilmesi/kısıtlanması mümkün olabilir.
Tür
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
Parametreler
İlerlemeler
-
Taahhüt<İstek>
RequestWillFetchCallbackParam
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
state
MapLikeObject isteğe bağlı
RouteHandler
RouteHandlerCallback
veya RouteHandlerObject
.
workbox-routing
içinde rota işleyicilerini kabul eden çoğu API, bunlardan birini kullanır.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
Bir Router
, bir URL'yi/İsteği RouteMatchCallback
aracılığıyla bir Route
ile eşleştirdiğinde "işleyici" geri çağırması çağrılır. Bu işleyici geri çağırması, Response
ile çözümlenen bir Promise
döndürmelidir.
RouteMatchCallback
tarafından boş olmayan bir dizi veya nesne döndürülürse söz konusu dizi veya nesne, bu işleyicinin options.params
bağımsız değişkeni olarak aktarılır.
Parametreler
-
seçenekler
İlerlemeler
-
Söz<Yanıt>
RouteHandlerCallbackOptions
Seçenekler, bir RouteHandlerCallback
işlevine iletildi.
Özellikler
-
event
ExtendableEvent
-
params
string[] | MapLikeObject isteğe bağlı
-
istek
İstek
-
url
URL
RouteHandlerObject
RouteHandlerCallback
türünde handle
yöntemine sahip bir nesne.
Route
nesnesi, RouteHandlerCallback
işleviyle veya bu RouteHandler
nesnesiyle oluşturulabilir. RouteHandler
, workbox-strategies
paketinin yaptığı gibi genişletilebilme olanağı sunmasıdır.
Özellikler
-
herkese açık kullanıcı adı
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
"Eşleşme" geri çağırması, belirli bir URL ve istek için bir Route
öğesinin geçerli olup olmadığını belirlemek amacıyla kullanılır. İstemciden gelen bir getirme etkinliğine yanıt olarak eşleşme gerçekleştiğinde event
nesnesi de sağlanır. Bununla birlikte, eşleştirme geri çağırması bir getirme etkinliğinin dışında da çağrılabileceği için eşleşme mantığı, event
nesnesinin her zaman kullanılabilir olacağını varsaymamalıdır.
Eşleşme geri çağırması bir doğruluk değeri döndürürse eşleşen rotanın RouteHandlerCallback
'i 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
İlerlemeler
-
Tümü
RouteMatchCallbackOptions
Seçenekler, bir RouteMatchCallback
işlevine iletildi.
Özellikler
-
event
ExtendableEvent
-
istek
İstek
-
sameOrigin
boolean
-
url
URL
WorkboxPlugin
Getirme ve önbellek işlemleri için isteğe bağlı yaşam döngüsü geri çağırma özelliklerine sahip bir nesnedir.
Ö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 geçerli önbellek adlarını ve ön eki/son eki alın.
cacheNames.precache
önbelleğe alınmış öğeler için kullanılır, cacheNames.googleAnalytics
ise workbox-google-analytics
tarafından depolamakanalytics.js
tarafından, cacheNames.runtime
ise geri kalan her şey için kullanılır.
cacheNames.prefix
, yalnızca geçerli ön ek değerini almak için kullanılabilir.
cacheNames.suffix
, yalnızca geçerli son ek değerini almak için kullanılabilir.
Tür
nesne
Özellikler
-
googleAnalytics
dize
-
önden belleğe almak
dize
-
önek
dize
-
runtime
dize
-
sonek
dize
Yöntemler
clientsClaim()
workbox-core.clientsClaim()
Hizmet çalışanı etkin hale geldiğinde mevcut tüm istemcileri talep edin. Bu kod normalde skipWaiting()
ile birlikte kullanılır.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
Geliştiricilere bir yanıtı kopyalayıp headers
, status
veya statusText
değerlerini (oluşturucudaki [ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
nesnesi aracılığıyla ayarlanabilen değerler) değiştirmelerine olanak tanır.
Bu değerleri değiştirmek için bir işlevi ikinci bağımsız değişken olarak iletin. Bu işlev, {headers, status, statusText}
yanıt özelliklerine sahip tek bir nesneyle çağrılır. Bu işlevin döndürülen değeri, 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ılmamasından bağımsız olarak kasıtlı olarak aynı kaynaktan gelen yanıtlarla sınırlandırılmıştır.
Parametreler
-
yanıt
Yanıt
-
değiştirici
Functions (isteğe bağlı)
modifier
parametresi şu şekilde görünür:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
İlerlemeler
-
Söz<Yanıt>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Kota hatası varsa yürütülecek kotaErrorCallbacks kümesine bir işlev 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öntem kullanımdan kaldırılmıştır ve Workbox v7'de kaldırılacaktır.
self.skip Waiting() işlevine çağrı yapmak eşdeğerdir ve bunun yerine kullanılmalıdır.