Workbox dibuat agar bersifat modular, yang memungkinkan developer memilih bagian yang ingin mereka gunakan tanpa memaksa mereka untuk mendownload semuanya dalam satu file.
Namun ada tumpang tindih di antara modul, misalnya, setiap modul perlu
berinteraksi dengan konsol, menampilkan error yang berarti, dan memanfaatkan
jaringan atau cache. Untuk menghindari setiap modul menerapkan logika yang sama,
workbox-core
berisi kode umum ini yang diandalkan oleh setiap modul.
Modul ini memang menyediakan beberapa fungsi kepada developer, tetapi di luar level
log dan caching, workbox-core
menawarkan logika internal untuk setiap modul,
bukan developer akhir.
Lihat dan Ubah Nama Cache Default
Workbox menentukan cache-nya melalui cacheNames
:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
Nama cache ini dibuat dalam format awalan, nama, dan akhiran, dengan nama berubah berdasarkan penggunaan cache.
<prefix>-<cache-id>-<suffix>
Anda dapat mengubah nama default ini dengan mengubah semua atau beberapa nilai
yang diteruskan ke 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);
Kasus penggunaan utama untuk awalan dan akhiran adalah jika Anda menggunakan Workbox untuk beberapa project dan menggunakan port localhost yang sama untuk setiap project, penetapan awalan kustom untuk setiap modul akan mencegah cache saling bertentangan.
Klaim Klien
Beberapa developer ingin dapat memublikasikan pekerja layanan baru dan membuatnya mengontrol halaman web yang sudah terbuka segera setelah diaktifkan. Hal ini tidak akan terjadi secara default.
Jika Anda menginginkan perilaku ini, workbox-core
menyediakan metode bantuan:
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();
Metode clientsClaim()
di workbox-core
secara otomatis menambahkan pemroses peristiwa activate
ke pekerja layanan Anda, dan di dalamnya akan memanggil self.clients.claim()
. Memanggil self.clients.claim()
sebelum pekerja layanan saat ini diaktifkan akan menyebabkan pengecualian runtime, dan wrapper workbox-core
membantu memastikan Anda memanggilnya pada waktu yang tepat.
Wrapper skipMenunggu tidak digunakan lagi
Sebelum Workbox v6, developer juga dianjurkan untuk menggunakan metode skipWaiting()
dari workbox-core
. Namun, metode ini hanya menawarkan sedikit nilai di luar yang akan
diperoleh developer jika mereka memanggil self.skipWaiting()
secara eksplisit.
Karena wrapper workbox-core
lama juga mendaftarkan pengendali peristiwa install
tempat self.skipWaiting()
dipanggil, wrapper tidak akan berperilaku seperti yang diharapkan jika dipanggil di dalam pengendali peristiwa lain, seperti message
, setelah penginstalan selesai.
Karena alasan ini, skipWaiting()
workbox-core
tidak digunakan lagi, dan developer
harus beralih untuk memanggil self.skipWaiting()
secara langsung. Tidak seperti self.clients.claim()
, self.skipWaiting()
tidak akan menampilkan pengecualian jika dipanggil pada waktu yang "salah", sehingga tidak perlu menggabungkannya dalam pengendali peristiwa.
Jenis
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
Parameter
Hasil
-
Promise<void>
CacheDidUpdateCallbackParam
Properti
-
cacheName
string
-
event
ExtendableEvent
-
newResponse
Respons
-
oldResponse
Respons opsional
-
minta
Permintaan
-
state
MapLikeObject opsional
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
Parameter
Hasil
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
Properti
-
cacheName
string
-
cachedResponse
Respons opsional
-
event
ExtendableEvent
-
matchOptions
CacheQueryOptions opsional
-
minta
Permintaan
-
state
MapLikeObject opsional
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
Parameter
Hasil
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
Properti
-
event
ExtendableEvent
-
mode
string
-
params
opsional
-
minta
Permintaan
-
state
MapLikeObject opsional
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
Parameter
Hasil
-
Promise<void | Response>
CacheWillUpdateCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
respons
Respons
-
state
MapLikeObject opsional
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
Parameter
Hasil
-
Promise<void>
FetchDidFailCallbackParam
Properti
-
error
Error
-
event
ExtendableEvent
-
originalRequest
Permintaan
-
minta
Permintaan
-
state
MapLikeObject opsional
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
Parameter
Hasil
-
Promise<Response>
FetchDidSucceedCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
respons
Respons
-
state
MapLikeObject opsional
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
Parameter
Hasil
-
Promise<void>
HandlerDidCompleteCallbackParam
Properti
-
error
Error opsional
-
event
ExtendableEvent
-
minta
Permintaan
-
respons
Respons opsional
-
state
MapLikeObject opsional
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
Parameter
Hasil
-
Promise<Response>
HandlerDidErrorCallbackParam
Properti
-
error
Error
-
event
ExtendableEvent
-
minta
Permintaan
-
state
MapLikeObject opsional
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
Parameter
Hasil
-
Promise<void>
HandlerDidRespondCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
respons
Respons opsional
-
state
MapLikeObject opsional
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
Parameter
Hasil
-
Promise<Response>
HandlerWillRespondCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
respons
Respons
-
state
MapLikeObject opsional
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
Parameter
Hasil
-
Promise<void>
HandlerWillStartCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
state
MapLikeObject opsional
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
Callback "pengendali" dipanggil setiap kali Router
cocok dengan URL/Permintaan
dengan Route
melalui RouteMatchCallback
-nya. Callback pengendali ini harus menampilkan Promise
yang di-resolve dengan Response
.
Jika ditampilkan oleh RouteMatchCallback
, array atau objek yang tidak kosong akan diteruskan sebagai argumen options.params
pengendali ini.
Parameter
Hasil
-
Promise<Response>
ManualHandlerCallbackOptions
Opsi diteruskan ke fungsi ManualHandlerCallback
.
Properti
-
event
ExtendableEvent
-
minta
string | Permintaan
MapLikeObject
PluginState
Menggunakan MapLikeObject
biasa untuk saat ini, tetapi dapat memperluas/membatasinya
di masa mendatang.
Jenis
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
Parameter
Hasil
-
Promise<Permintaan>
RequestWillFetchCallbackParam
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
state
MapLikeObject opsional
RouteHandler
Dapat berupa RouteHandlerCallback
atau RouteHandlerObject
.
Sebagian besar API di workbox-routing
yang menerima pengendali rute juga mengambil salah satu dari pengendali tersebut.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
Callback "pengendali" dipanggil setiap kali Router
cocok dengan URL/Permintaan
dengan Route
melalui RouteMatchCallback
-nya. Callback pengendali ini harus menampilkan Promise
yang di-resolve dengan Response
.
Jika ditampilkan oleh RouteMatchCallback
, array atau objek yang tidak kosong akan diteruskan sebagai argumen options.params
pengendali ini.
Parameter
Hasil
-
Promise<Response>
RouteHandlerCallbackOptions
Opsi diteruskan ke fungsi RouteHandlerCallback
.
Properti
-
event
ExtendableEvent
-
params
string[] | MapLikeObject opsional
-
minta
Permintaan
-
url
URL
RouteHandlerObject
Objek dengan metode handle
berjenis RouteHandlerCallback
.
Objek Route
dapat dibuat dengan fungsi RouteHandlerCallback
atau objek RouteHandler
ini. Manfaat RouteHandler
adalah dapat diperluas (seperti yang dilakukan oleh paket workbox-strategies
).
Properti
-
handle
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
Callback "match" digunakan untuk menentukan apakah Route
harus diterapkan untuk
URL dan permintaan tertentu. Jika pencocokan terjadi sebagai respons terhadap peristiwa
pengambilan dari klien, objek event
juga akan disediakan. Namun, karena callback pencocokan dapat dipanggil di luar peristiwa pengambilan, logika pencocokan tidak boleh berasumsi bahwa objek event
akan selalu tersedia.
Jika callback pencocokan menampilkan nilai benar, RouteHandlerCallback
rute yang cocok akan segera dipanggil. Jika nilai yang ditampilkan adalah array atau objek yang tidak kosong, nilai tersebut akan ditetapkan pada argumen options.params
pengendali.
Parameter
Hasil
-
apa pun
RouteMatchCallbackOptions
Opsi diteruskan ke fungsi RouteMatchCallback
.
Properti
-
event
ExtendableEvent
-
minta
Permintaan
-
sameOrigin
boolean
-
url
URL
WorkboxPlugin
Objek dengan properti callback siklus proses opsional untuk operasi pengambilan dan cache.
Properti
-
cacheDidUpdate
CacheDidUpdateCallback opsional
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback opsional
-
cacheWillUpdate
CacheWillUpdateCallback opsional
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback opsional
-
fetchDidFail
FetchDidFailCallback opsional
-
fetchDidSucceed
FetchDidSucceedCallback opsional
-
handlerDidComplete
HandlerDidCompleteCallback opsional
-
handlerDidError
HandlerDidErrorCallback opsional
-
handlerDidRespond
HandlerDidRespondCallback opsional
-
handlerWillRespond
HandlerWillRespondCallback opsional
-
handlerWillStart
HandlerWillStartCallback opsional
-
requestWillFetch
RequestWillFetchCallback opsional
WorkboxPluginCallbackParam
Properti
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
Properti
cacheNames
Dapatkan nama cache dan awalan/akhiran saat ini yang digunakan oleh Workbox.
cacheNames.precache
digunakan untuk aset yang di-cache,
cacheNames.googleAnalytics
digunakan oleh workbox-google-analytics
untuk
menyimpan analytics.js
, dan cacheNames.runtime
digunakan untuk lainnya.
cacheNames.prefix
dapat digunakan untuk mengambil nilai awalan saat ini saja.
cacheNames.suffix
dapat digunakan untuk mengambil hanya nilai akhiran saat ini.
Jenis
objek
Properti
-
googleAnalytics
string
-
{i>precache<i}
string
-
awalan
string
-
runtime
string
-
akhiran
string
Metode
clientsClaim()
workbox-core.clientsClaim()
Klaim klien yang tersedia saat ini setelah pekerja layanan aktif. Ini biasanya digunakan bersama dengan skipWaiting()
.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
Memungkinkan developer menyalin respons dan mengubah nilai headers
, status
,
atau statusText
(nilai yang dapat ditetapkan melalui
objek [ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
di konstruktor).
Untuk memodifikasi nilai ini, teruskan fungsi sebagai argumen kedua. Fungsi tersebut akan dipanggil dengan satu objek dengan properti respons {headers, status, statusText}
. Nilai yang ditampilkan dari fungsi ini akan
digunakan sebagai ResponseInit
untuk Response
baru. Untuk mengubah nilai, ubah parameter yang diteruskan dan tampilkan, atau tampilkan objek yang benar-benar baru.
Metode ini sengaja dibatasi pada respons asal yang sama, terlepas dari apakah CORS digunakan atau tidak.
Parameter
-
respons
Respons
-
pengubah
fungsi opsional
Parameter
modifier
terlihat seperti:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
akan menampilkan
ResponseInit
-
Hasil
-
Promise<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
Menambahkan fungsi ke kumpulan datasetErrorCallbacks yang akan dijalankan jika terjadi error kuota.
Parameter
-
callback
Fungsi
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
Memodifikasi nama cache default yang digunakan oleh paket Workbox.
Nama cache dibuat sebagai <prefix>-<Cache Name>-<suffix>
.
Parameter
-
detail
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
Metode ini tidak digunakan lagi, dan akan dihapus di Workbox v7.
Memanggil self.skipMenunggu() setara, dan harus digunakan sebagai gantinya.