تم تصميم Workbox ليكون مكوّنًا، ما يسمح للمطوّرين باختيار القطع التي يريدون استخدامها بدون إجبارهم على تنزيل كل شيء فيملف واحد.
ومع ذلك، هناك تداخل بين الوحدات، على سبيل المثال، ستحتاج كل وحدة إلى
التفاعل مع وحدة التحكّم وعرض أخطاء ذات مغزى والاستفادة من
الشبكة أو ذاكرة التخزين المؤقت. لتجنّب تنفيذ كل وحدة للطريقة نفسها، يحتوي ملف workbox-core
على هذا الرمز الشائع الذي تعتمد عليه كل وحدة.
توفّر هذه الوحدة بعض الوظائف للمطوّرين، ولكن بالإضافة إلى مستويات log
والتخزين المؤقت، يوفّر workbox-core
منطقًا داخليًا لكل وحدة،
بدلاً من المطوّر النهائي.
عرض أسماء ذاكرة التخزين المؤقت التلقائية وتغييرها
تحدِّد Workbox ذاكرات التخزين المؤقت الخاصة بها من خلال 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 في مشاريع متعدّدة واستخدام منفذ المضيف المحلي نفسه لكل مشروع، سيؤدي ضبط بادئة مخصّصة لكل وحدة إلى منع ذاكرات التخزين المؤقت من التعارض مع بعضها.
مطالبة العملاء
يريد بعض المطوّرين أن يتمكّنوا من نشر عامل خدمة جديد وجعله يتحكّم في صفحات الويب المفتوحة حاليًا فور تفعيله، ولن يحدث ذلك تلقائيًا.
إذا أردت هذا السلوك، يوفّر 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
أداة معالجة أحداث إلى عامل الخدمة، وتُجري داخلها مكالمة
self.clients.claim()
. سيؤدي استدعاء self.clients.claim()
قبل تنشيط عامل تدفق الخدمة الحالي إلى استثناء وقت التشغيل، ويساعد الغلاف workbox-core
في ضمان استدعائه في الوقت المناسب.
تم إيقاف حزمة skipWaiting
قبل الإصدار 6 من Workbox، كان المطوّرون ينصحون أيضًا باستخدام skipWaiting()
الطريقة من workbox-core
. ومع ذلك، لم توفّر هذه الطريقة قيمة كبيرة مقارنةً بما يحصل عليه المطوّرون عند استدعاء self.skipWaiting()
صراحةً.
بما أنّ حزمة workbox-core
القديمة المسجّلة أيضًا مسجّلة كمعالج حدث install
تم استدعاء self.skipWaiting()
فيه، لن تتصرّف الحزمة على النحو المتوقّع
إذا تم استدعاؤها داخل معالج حدث آخر، مثل message
، بعد اكتمال التركيب.
لهذه الأسباب، تم إيقاف skipWaiting()
في workbox-core
نهائيًا، وعلى المطوّرين
الانتقال إلى الاتصال بـ self.skipWaiting()
مباشرةً. على عكس
self.clients.claim()
، لن يُلقي self.skipWaiting()
استثناءً في حال تم استدعاؤه
في الوقت "الخاطئ"، لذا ليس من الضروري تضمينه في معالِج أحداث.
الأنواع
CacheDidUpdateCallback()
workbox-core.CacheDidUpdateCallback(
param: CacheDidUpdateCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void>
CacheDidUpdateCallbackParam
الخصائص
-
cacheName
سلسلة
-
حدث
ExtendableEvent
-
newResponse
الردّ
-
oldResponse
الاستجابة اختيارية
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
الخصائص
-
cacheName
سلسلة
-
cachedResponse
الاستجابة اختيارية
-
حدث
ExtendableEvent
-
matchOptions
CacheQueryOptions اختياري
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
المعلمات
المرتجعات
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
الوضع
سلسلة
-
params
أيّ اختيارية
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void | Response>
CacheWillUpdateCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
رد
الردّ
-
الولاية
MapLikeObject اختياري
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void>
FetchDidFailCallbackParam
الخصائص
-
خطأ
خطأ
-
حدث
ExtendableEvent
-
originalRequest
الطلب
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
المعلمات
المرتجعات
-
Promise<Response>
FetchDidSucceedCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
رد
الردّ
-
الولاية
MapLikeObject اختياري
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void>
HandlerDidCompleteCallbackParam
الخصائص
-
خطأ
خطأ اختياري
-
حدث
ExtendableEvent
-
طلب
الطلب
-
رد
الاستجابة اختيارية
-
الولاية
MapLikeObject اختياري
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
المعلمات
المرتجعات
-
Promise<Response>
HandlerDidErrorCallbackParam
الخصائص
-
خطأ
خطأ
-
حدث
ExtendableEvent
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void>
HandlerDidRespondCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
رد
الاستجابة اختيارية
-
الولاية
MapLikeObject اختياري
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
المعلمات
المرتجعات
-
Promise<Response>
HandlerWillRespondCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
رد
الردّ
-
الولاية
MapLikeObject اختياري
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
المعلمات
المرتجعات
-
Promise<void>
HandlerWillStartCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
يتمّ استدعاء دالة "المعالج" لمعاودة الاتصال كلّما تطابق Router
مع عنوان URL/طلب
مع Route
من خلال RouteMatchCallback
. يجب أن يُعيد أسلوب الاستدعاء هذا للمعالج
قيمة Promise
يتم حلّها باستخدام Response
.
إذا تم عرض مصفوفة أو عنصر غير فارغ من خلال RouteMatchCallback
،
سيتم تمريره كوسيطة options.params
لهذا المعالِج.
المعلمات
-
الخيارات
المرتجعات
-
Promise<Response>
ManualHandlerCallbackOptions
الخيارات التي يتم تمريرها إلى دالة ManualHandlerCallback
الخصائص
-
حدث
ExtendableEvent
-
طلب
سلسلة | طلب
MapLikeObject
PluginState
يتم حاليًا استخدام MapLikeObject
عادي، ولكن يمكن أن يتم تمديد هذا الرمز أو تقييده
في المستقبل.
النوع
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
المعلمات
المرتجعات
-
Promise<Request>
RequestWillFetchCallbackParam
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
الولاية
MapLikeObject اختياري
RouteHandler
إما RouteHandlerCallback
أو RouteHandlerObject
إنّ معظم واجهات برمجة التطبيقات في workbox-routing
التي تقبل معالجات المسارات تأخذ أيًا مما يلي:
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
يتمّ استدعاء دالة "المعالج" لمعاودة الاتصال كلّما تطابق Router
مع عنوان URL/طلب
مع Route
من خلال RouteMatchCallback
. يجب أن يُعيد أسلوب الاستدعاء هذا للمعالج
قيمة Promise
يتم حلّها باستخدام Response
.
إذا تم عرض مصفوفة أو عنصر غير فارغ من خلال RouteMatchCallback
،
سيتم تمريره كوسيطة options.params
لهذا المعالِج.
المعلمات
-
الخيارات
المرتجعات
-
Promise<Response>
RouteHandlerCallbackOptions
الخيارات التي يتم تمريرها إلى دالة RouteHandlerCallback
الخصائص
-
حدث
ExtendableEvent
-
params
MapLikeObject | string[] اختياري
-
طلب
الطلب
-
url
عنوان URL
RouteHandlerObject
عنصر يحتوي على طريقة handle
من النوع RouteHandlerCallback
يمكن إنشاء عنصر Route
باستخدام دالة RouteHandlerCallback
أو عنصر RouteHandler
هذا. تتمثل فائدة RouteHandler
في إمكانية تمديدها (كما تفعل حزمة workbox-strategies
).
الخصائص
-
مؤشر
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
يتم استخدام دالة "match" لتحديد ما إذا كان يجب تطبيق Route
على عنوان URL وطلب معيّنَين. عند حدوث المطابقة استجابةً لحدث جلب
من العميل، يتم أيضًا تقديم العنصر event
. ومع ذلك، بما أنّه يمكن استدعاء callback المطابقة خارج حدث الجلب، يجب ألا يفترض منطق المطابقة أنّ عنصر event
سيكون متاحًا دائمًا.
إذا عرضت وظيفة الاستدعاء الخاصة بالمطابقة قيمة صحيحة، سيتم استدعاء
RouteHandlerCallback
المسار المطابق على الفور. إذا كانت القيمة المعروضة
مصفوفة أو عنصرًا غير فارغَين، سيتم ضبط هذه القيمة على وسيطة
options.params
في معالِج الحدث.
المعلمات
-
الخيارات
المرتجعات
-
أي واحد
RouteMatchCallbackOptions
الخيارات التي يتم تمريرها إلى دالة RouteMatchCallback
الخصائص
-
حدث
ExtendableEvent
-
طلب
الطلب
-
sameOrigin
قيمة منطقية
-
url
عنوان 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
للأصول التي تم تخزينها مؤقتًا، ويستخدم workbox-google-analytics
cacheNames.googleAnalytics
لحفظ analytics.js
، ويستخدم cacheNames.runtime
كل شيء آخر.
يمكن استخدام cacheNames.prefix
لاسترداد قيمة البادئة الحالية فقط.
يمكن استخدام cacheNames.suffix
لاسترداد قيمة اللاحقة الحالية فقط.
النوع
عنصر
الخصائص
-
googleAnalytics
سلسلة
-
precache
سلسلة
-
بادئة
سلسلة
-
وقت التشغيل
سلسلة
-
لاحقة
سلسلة
الطُرق
clientsClaim()
workbox-core.clientsClaim()
يمكنك الحصول على أي عملاء متاحين حاليًا بعد أن يصبح عامل الخدمة
نشطًا. ويُستخدَم هذا عادةً مع 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
-
returns
ResponseInit
-
المرتجعات
-
Promise<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()
تم إيقاف هذه الطريقة نهائيًا، وستتم إزالتها في الإصدار 7 من Workbox.
إنّ استدعاء self.skipWaiting() هو إجراء مكافئ، ويجب استخدامه بدلاً من ذلك.