workbox-core

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,
)

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,
)

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,
)

Hasil

  • Promise<string | Request>

CacheKeyWillBeUsedCallbackParam

Properti

  • event

    ExtendableEvent

  • mode

    string

  • params

    opsional

  • minta

    Permintaan

  • state

    MapLikeObject opsional

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

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,
)

Hasil

  • Promise<Response>

FetchDidSucceedCallbackParam

Properti

  • event

    ExtendableEvent

  • minta

    Permintaan

  • respons

    Respons

  • state

    MapLikeObject opsional

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

Hasil

  • Promise<void>

HandlerDidCompleteCallbackParam

Properti

  • error

    Error opsional

  • event

    ExtendableEvent

  • minta

    Permintaan

  • respons

    Respons opsional

  • state

    MapLikeObject opsional

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

Hasil

  • Promise<Response>

HandlerDidErrorCallbackParam

Properti

  • error

    Error

  • event

    ExtendableEvent

  • minta

    Permintaan

  • state

    MapLikeObject opsional

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

Hasil

  • Promise<void>

HandlerDidRespondCallbackParam

Properti

  • event

    ExtendableEvent

  • minta

    Permintaan

  • respons

    Respons opsional

  • state

    MapLikeObject opsional

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

Hasil

  • Promise<Response>

HandlerWillRespondCallbackParam

Properti

  • event

    ExtendableEvent

  • minta

    Permintaan

  • respons

    Respons

  • state

    MapLikeObject opsional

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

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.

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.

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

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.

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

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.

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

WorkboxPluginCallbackParam

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.