סביבת Workbox תוכננה להיות מודולרית, כך שמפתחים יכולים לבחור את החלקים שהם רוצים להשתמש בהם בלי לאלץ אותם להוריד את הכול בקובץ אחד.
עם זאת, יש חפיפה בין המודולים, לדוגמה, כל מודול צריך לפעול עם המסוף, לגרום לשגיאות משמעותיות ולהשתמש ברשת או במטמון. כדי שכל מודול לא יטמיע את אותה לוגיקה, הקוד workbox-core
מכיל את הקוד הנפוץ הזה שעליו נסתמך כל מודול.
המודול הזה מספק למפתחים פונקציונליות מסוימת, אבל מעבר לרמות היומן ולשמירה במטמון, workbox-core
מציע לוגיקה פנימית לכל מודול, ולא למפתח הקצה.
הצגה ושינוי של שמות ברירת המחדל של המטמון
תיבת העבודה מגדירה את המטמון שלה באמצעות cacheNames
:
import {cacheNames} from 'workbox-core';
console.log(cacheNames.precache);
console.log(cacheNames.runtime);
console.log(cacheNames.googleAnalytics);
השמות של המטמון נוצרים בפורמט של תחילית, שם וסיומת, והשמות משתנים בהתאם לשימוש במטמון.
<prefix>-<cache-id>-<suffix>
אפשר לשנות את שמות ברירות המחדל האלה על ידי שינוי כל הערכים שמועברים אל 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);
התרחיש העיקרי לדוגמה של קידומת וסיומת הוא שאם משתמשים ב-Workbox למספר פרויקטים ומשתמשים באותה יציאת Localhost לכל פרויקט, הגדרת קידומת מותאמת אישית לכל מודול תמנע התנגשות בין המטמון.
תביעת לקוחות
חלק מהמפתחים רוצים את האפשרות לפרסם קובץ שירות (service worker) חדש, ולאפשר לו לשלוט בדפי אינטרנט שפתוחים כבר ברגע ההפעלה, פעולה שלא מתבצעת כברירת מחדל.
אם היית רוצה לגלות זאת, אפשר להיעזר ב-workbox-core
בשיטה המסייעת:
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();
השיטה clientsClaim()
ב-workbox-core
מוסיפה באופן אוטומטי האזנה לאירועים מסוג activate
ל-Service Worker, ובתוכו קוראת ל-self.clients.claim()
. קריאה ל-self.clients.claim()
לפני הפעלת ה-service worker הנוכחי תוביל לחריגה בזמן הריצה, וה-wrapper של workbox-core
עוזר לוודא שמתקשרים אליו בזמן הנכון.
ה-wrapper שלSkipwaiting הוצא משימוש
לפני הגרסה Workbox v6, הומלץ למפתחים להשתמש גם בשיטה skipWaiting()
מ-workbox-core
. עם זאת, השיטה הזו הציעה ערך מועט, מעבר למה שהמפתחים יקבלו אם הם יקראו ל-self.skipWaiting()
באופן מפורש.
מכיוון שה-wrapper של workbox-core
מדור קודם רשם גם handler של אירועים של install
שבו נקרא self.skipWaiting()
, ה-wrapper לא יפעל כצפוי אם הוא יופעל בתוך handler אחר של אירועים, כמו message
, אחרי שההתקנה כבר הסתיימה.
לכן, skipWaiting()
של workbox-core
הוצא משימוש, ומפתחים צריכים לעבור ישירות אל self.skipWaiting()
. בניגוד ל-self.clients.claim()
, self.skipWaiting()
לא יגרום לחריגה אם הוא נקרא בזמן 'שגוי', ולכן אין צורך להגדיר אותו כ-handler של אירועים.
סוגים
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
פרמטרים
החזרות
-
Promise<void>
CacheDidUpdateCallbackParam
תכונות
-
cacheName
string
-
אירוע
ExtendableEvent
-
newResponse
תשובה
-
oldResponse
תשובה אופציונלי
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
פרמטרים
החזרות
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
תכונות
-
cacheName
string
-
cachedResponse
תשובה אופציונלי
-
אירוע
ExtendableEvent
-
matchOptions
CacheQueryOptions אופציונלי
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
פרמטרים
החזרות
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
אמצעי תחבורה
string
-
params
כל אופציונלי
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
פרמטרים
החזרות
-
Promise<void | Response>
CacheWillUpdateCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
תשובה
תשובה
-
state
MapLikeObject אופציונלי
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
פרמטרים
החזרות
-
Promise<void>
FetchDidFailCallbackParam
תכונות
-
error
שגיאה
-
אירוע
ExtendableEvent
-
originalRequest
בקשה
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
פרמטרים
החזרות
-
הבטחה<Response>
FetchDidSucceedCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
תשובה
תשובה
-
state
MapLikeObject אופציונלי
HandlerCallbackOptions
טיפוסים בני מנייה (enum)
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
פרמטרים
החזרות
-
Promise<void>
HandlerDidCompleteCallbackParam
תכונות
-
error
שגיאה אופציונלי
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
תשובה
תשובה אופציונלי
-
state
MapLikeObject אופציונלי
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
פרמטרים
החזרות
-
הבטחה<Response>
HandlerDidErrorCallbackParam
תכונות
-
error
שגיאה
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
פרמטרים
החזרות
-
Promise<void>
HandlerDidRespondCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
תשובה
תשובה אופציונלי
-
state
MapLikeObject אופציונלי
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
פרמטרים
החזרות
-
הבטחה<Response>
HandlerWillRespondCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
תשובה
תשובה
-
state
MapLikeObject אופציונלי
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
פרמטרים
החזרות
-
Promise<void>
HandlerWillStartCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
הקריאה החוזרת (callback) של "handler" מופעלת בכל פעם ש-Router
תואם לכתובת URL או לבקשה ל-Route
דרך RouteMatchCallback
. הקריאה החוזרת (callback) של ה-handler הזה אמורה להחזיר Promise
שמקבלת את הערך Response
.
אם מערך או אובייקט שאינם ריקים מוחזרים על ידי RouteMatchCallback
, הם יועברו כארגומנט options.params
של ה-handler הזה.
פרמטרים
-
אפשרויות
החזרות
-
הבטחה<Response>
ManualHandlerCallbackOptions
האפשרויות הועברו לפונקציה ManualHandlerCallback
.
תכונות
-
אירוע
ExtendableEvent
-
בקשה
מחרוזת | בקשה
MapLikeObject
PluginState
אנחנו משתמשים ב-MapLikeObject
פשוט כרגע, אבל יכול להיות להאריך או להגביל את האפשרות הזו בעתיד.
סוג
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
פרמטרים
החזרות
-
הבטחה<בקשה>
RequestWillFetchCallbackParam
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
state
MapLikeObject אופציונלי
RouteHandler
RouteHandlerCallback
או RouteHandlerObject
.
רוב ממשקי ה-API ב-workbox-routing
שמקבלים רכיבי handler של מסלולים נמשכים גם הם.
טיפוסים בני מנייה (enum)
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
הקריאה החוזרת (callback) של "handler" מופעלת בכל פעם ש-Router
תואם לכתובת URL או לבקשה ל-Route
דרך RouteMatchCallback
. הקריאה החוזרת (callback) של ה-handler הזה אמורה להחזיר Promise
שמקבלת את הערך Response
.
אם מערך או אובייקט שאינם ריקים מוחזרים על ידי RouteMatchCallback
, הם יועברו כארגומנט options.params
של ה-handler הזה.
פרמטרים
-
אפשרויות
החזרות
-
הבטחה<Response>
RouteHandlerCallbackOptions
האפשרויות הועברו לפונקציה RouteHandlerCallback
.
תכונות
-
אירוע
ExtendableEvent
-
params
string[] | MapLikeObject אופציונלי
-
בקשה
בקשה
-
כתובת אתר
כתובת URL
RouteHandlerObject
אובייקט עם שיטה handle
מסוג RouteHandlerCallback
.
ניתן ליצור אובייקט Route
באמצעות פונקציית RouteHandlerCallback
או באמצעות האובייקט RouteHandler
. היתרון של RouteHandler
הוא שאפשר להרחיב אותו (כפי שקורה בחבילת workbox-strategies
).
תכונות
-
כינוי
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
הקריאה החוזרת (callback) "התאמה" משמשת כדי לקבוע אם Route
צריך לחול
על כתובת URL מסוימת ובקשה מסוימת. כשההתאמה מתרחשת בתגובה לאירוע
אחזור מהלקוח, מסופק גם האובייקט event
. עם זאת, מאחר שאפשר להפעיל את הקריאה החוזרת של ההתאמה מחוץ לאירוע אחזור, הלוגיקה התואמת לא צריכה להניח שהאובייקט event
יהיה תמיד זמין.
אם הקריאה החוזרת של ההתאמה מחזירה ערך מהימן, הערך RouteHandlerCallback
של הנתיב התואם יופעל מיד. אם הערך המוחזר הוא מערך או אובייקט שאינם ריקים, הערך יוגדר בארגומנט options.params
של ה-handler.
פרמטרים
-
אפשרויות
החזרות
-
הכול
RouteMatchCallbackOptions
האפשרויות הועברו לפונקציה RouteMatchCallback
.
תכונות
-
אירוע
ExtendableEvent
-
בקשה
בקשה
-
sameOrigin
boolean
-
כתובת אתר
כתובת URL
WorkboxPlugin
אובייקט עם מאפיינים אופציונליים של קריאה חוזרת במחזור החיים, לפעולות האחזור והמטמון.
תכונות
-
cacheDidUpdate
CacheDidUpdateCallback אופציונלי
-
cacheKeyWillBeUsed
CacheKeyWillBeUsedCallback אופציונלי
-
cacheWillUpdate
CacheWillUpdateCallback אופציונלי
-
cachedResponseWillBeUsed
CachedResponseWillBeUsedCallback אופציונלי
-
fetchDidFail
FetchDidFailCallback אופציונלי
-
fetchDidSucceed
FetchDidSucceedCallback אופציונלי
-
handlerDidComplete
HandlerDidCompleteCallback אופציונלי
-
handlerDidError
HandlerDidErrorCallback אופציונלי
-
handlerDidRespond
HandlerDidRespondCallback אופציונלי
-
handlerWillRespond
HandlerWillRespondCallback אופציונלי
-
handlerWillStart
HandlerWillStartCallback אופציונלי
-
requestWillFetch
RequestWillFetchCallback אופציונלי
WorkboxPluginCallbackParam
תכונות
-
cacheDidUpdate
-
cacheKeyWillBeUsed
-
cacheWillUpdate
-
cachedResponseWillBeUsed
-
fetchDidFail
-
fetchDidSucceed
-
handlerDidComplete
-
handlerDidError
-
handlerDidRespond
-
handlerWillRespond
-
handlerWillStart
-
requestWillFetch
תכונות
cacheNames
קבלת השמות והקידומת/סיומת הנוכחיים של המטמון שמשמשים את Workbox.
cacheNames.precache
משמש לנכסים ששמורים מראש,
cacheNames.googleAnalytics
משמש את workbox-google-analytics
לאחסון analytics.js
ו-cacheNames.runtime
משמש לכל שאר הדברים.
אפשר להשתמש ב-cacheNames.prefix
כדי לאחזר רק את ערך הקידומת הנוכחי.
אפשר להשתמש ב-cacheNames.suffix
כדי לאחזר רק את ערך הסיומת הנוכחי.
סוג
אובייקט
תכונות
-
googleAnalytics
string
-
מטמון מראש
string
-
תחילית
string
-
סביבת זמן ריצה
string
-
מוספית
string
שיטות
clientsClaim()
workbox-core.clientsClaim()
תובעים בעלות על לקוחות זמינים כרגע ברגע שה-Service Worker הופך לפעיל. בדרך כלל משתמשים בו בשילוב עם skipWaiting()
.
copyResponse()
workbox-core.copyResponse(
response: Response,
modifier?: function,
)
מפתחים יכולים להעתיק תגובה ולשנות את ערכי headers
, status
או statusText
שלה (ניתן להגדיר את הערכים באמצעות אובייקט [ResponseInit
]https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax
במבנה).
כדי לשנות את הערכים האלה, צריך להעביר פונקציה כארגומנט השני. הפונקציה הזו תופעל עם אובייקט יחיד עם מאפייני התגובה {headers, status, statusText}
. הערך המוחזר של הפונקציה הזו ישמש בתור ResponseInit
עבור Response
החדש. כדי לשנות את הערכים או לשנות את הפרמטרים שהועברו ולהחזיר אותו, או להחזיר אובייקט חדש לגמרי.
השיטה הזו מוגבלת בכוונה לתגובות מאותו מקור, גם אם לא נעשה שימוש ב-CORS.
פרמטרים
-
תשובה
תשובה
-
עיבוד
פונקציה אופציונלי
הפרמטר
modifier
נראה כך:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
החזרות
ResponseInit
-
החזרות
-
הבטחה<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
הוספה של פונקציה לקבוצה של quotaErrorCallbacks שיתבצעו אם תהיה שגיאת מכסה.
פרמטרים
-
קריאה חוזרת (callback)
פעולה
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
שינוי שמות ברירת המחדל של המטמון המשמשים בחבילות Workbox.
שמות המטמון נוצרים כ-<prefix>-<Cache Name>-<suffix>
.
פרמטרים
-
פרטים
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
השיטה הזו הוצאה משימוש ותוסר מ-Workbox v7.
קריאה ל-self.skipwaiting() היא שוות-ערך, וצריך להשתמש בה במקום זאת.