תיבת עבודה-ליבה

סביבת 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

    מחרוזת

  • אירוע

    ExtendableEvent

  • newResponse

    תשובה

  • oldResponse

    תשובה אופציונלי

  • בקשה

    בקשה

  • state

    MapLikeObject אופציונלי

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

פרמטרים

החזרות

  • Promise<void|Response>

CachedResponseWillBeUsedCallbackParam

תכונות

  • cacheName

    מחרוזת

  • cachedResponse

    תשובה אופציונלי

  • אירוע

    ExtendableEvent

  • matchOptions

    CacheQueryOptions אופציונלי

  • בקשה

    בקשה

  • state

    MapLikeObject אופציונלי

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

פרמטרים

החזרות

  • הבטחה<string|בקשה>

CacheKeyWillBeUsedCallbackParam

תכונות

  • אירוע

    ExtendableEvent

  • אמצעי תחבורה

    מחרוזת

  • 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

אובייקט עם מאפיינים אופציונליים של קריאה חוזרת במחזור החיים, לפעולות האחזור והמטמון.

תכונות

WorkboxPluginCallbackParam

תכונות

cacheNames

קבלת השמות והקידומת/סיומת הנוכחיים של המטמון שמשמשים את Workbox.

cacheNames.precache משמש לנכסים ששמורים מראש, cacheNames.googleAnalytics משמש את workbox-google-analytics לאחסון analytics.js ו-cacheNames.runtime משמש לכל שאר הדברים.

אפשר להשתמש ב-cacheNames.prefix כדי לאחזר רק את ערך הקידומת הנוכחי. אפשר להשתמש ב-cacheNames.suffix כדי לאחזר רק את ערך הסיומת הנוכחי.

סוג

אובייקט

תכונות

  • googleAnalytics

    מחרוזת

  • מטמון מראש

    מחרוזת

  • תחילית

    מחרוזת

  • סביבת זמן ריצה

    מחרוזת

  • מוספית

    מחרוזת

שיטות

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() היא שוות-ערך, וצריך להשתמש בה במקום זאת.