Workbox به صورت ماژولار ساخته شده است و به توسعه دهندگان این امکان را می دهد تا قطعات مورد نظر خود را انتخاب کنند بدون اینکه مجبور شوند همه چیز را در یک فایل دانلود کنند.
با این حال، بین ماژول ها همپوشانی وجود دارد، برای مثال، هر ماژول دوست دارد با کنسول تعامل داشته باشد، خطاهای معناداری ایجاد کند و از شبکه یا حافظه پنهان استفاده کند. برای جلوگیری از اجرای منطق یکسان هر ماژول، workbox-core
حاوی این کد مشترک است که هر ماژول بر آن تکیه دارد.
این ماژول برخی از عملکردها را برای توسعه دهندگان فراهم می کند، اما فراتر از سطوح گزارش و حافظه پنهان، 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()
قبل از فعال شدن سرویسکار فعلی منجر به یک استثنا در زمان اجرا میشود و wrapper workbox-core
کمک میکند تا اطمینان حاصل شود که آن را در زمان مناسب فراخوانی میکنید.
بسته بندی skipWaiting منسوخ شده است
قبل از Workbox v6، توسعه دهندگان همچنین تشویق شدند تا از متد skipWaiting()
از workbox-core
استفاده کنند. با این حال، این روش ارزش کمی فراتر از آنچه توسعهدهندگان در صورت فراخوانی self.skipWaiting()
بهطور صریح دریافت میکنند، ارائه میکند.
از آنجا که wrapper قدیمی workbox-core
نیز یک کنترل کننده رویداد install
را ثبت کرده است که در آن self.skipWaiting()
فراخوانی شده است، اگر wrapper در داخل یک کنترل کننده رویداد دیگر، مانند message
، پس از اتمام نصب فراخوانی شود، آنطور که انتظار می رود رفتار نمی کند.
به این دلایل، skipWaiting()
workbox-core
منسوخ شده است و توسعه دهندگان باید مستقیماً به فراخوانی self.skipWaiting()
روی بیاورند. برخلاف self.clients.claim()
، self.skipWaiting()
در صورت فراخوانی در زمان "اشتباه" استثنایی ایجاد نمی کند، بنابراین نیازی به قرار دادن آن در یک کنترل کننده رویداد نیست.
انواع
پارامترها
- پارامتر
برمی گرداند
قول<باطل>
CacheDidUpdateCallbackParam
خواص
- cacheName
رشته
- رویداد
ExtendableEvent
- newResponse
پاسخ
- oldResponse
پاسخ اختیاری است
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
پارامترها
برمی گرداند
قول<باطل | پاسخ>
CachedResponseWillBeUsedCallbackParam
خواص
- cacheName
رشته
- cachedResponse
پاسخ اختیاری است
- رویداد
ExtendableEvent
- matchOptions
CacheQueryOptions اختیاری است
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<رشته | درخواست>
CacheKeyWillBeUsedCallbackParam
خواص
- رویداد
ExtendableEvent
- حالت
رشته
- پارامترها
هر اختیاری
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<باطل | پاسخ>
CacheWillUpdateCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- پاسخ
پاسخ
- دولت
MapLikeObject اختیاری است
پارامترها
- پارامتر
برمی گرداند
قول<باطل>
FetchDidFailCallbackParam
خواص
- خطا
خطا
- رویداد
ExtendableEvent
- درخواست اصلی
درخواست کنید
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<پاسخ>
FetchDidSucceedCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- پاسخ
پاسخ
- دولت
MapLikeObject اختیاری است
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<باطل>
HandlerDidCompleteCallbackParam
خواص
- خطا
خطا اختیاری است
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- پاسخ
پاسخ اختیاری است
- دولت
MapLikeObject اختیاری است
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<پاسخ>
HandlerDidErrorCallbackParam
خواص
- خطا
خطا
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<باطل>
HandlerDidRespondCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- پاسخ
پاسخ اختیاری است
- دولت
MapLikeObject اختیاری است
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<پاسخ>
HandlerWillRespondCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- پاسخ
پاسخ
- دولت
MapLikeObject اختیاری است
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<باطل>
HandlerWillStartCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
زمانی که Router
از طریق RouteMatchCallback
با URL/درخواست یک Route
مطابقت داشته باشد، فراخوانی «هندلر» فراخوانی میشود. این پاسخگوی کنترل کننده باید یک Promise
برگرداند که با یک Response
حل می شود.
اگر یک آرایه یا شی غیر خالی توسط RouteMatchCallback
برگردانده شود، به عنوان آرگومان options.params
این کنترل کننده ارسال می شود.
پارامترها
- گزینه ها
برمی گرداند
قول<پاسخ>
ManualHandlerCallbackOptions
گزینهها به یک تابع ManualHandlerCallback
منتقل شدند.
خواص
- رویداد
ExtendableEvent
- درخواست کنید
رشته | درخواست کنید
MapLikeObject
PluginState
در حال حاضر از یک MapLikeObject
ساده استفاده میکنید، اما میتواند در آینده این را گسترش/محدود کند.
تایپ کنید
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
پارامترها
- پارامتر
برمی گرداند
قول<درخواست>
RequestWillFetchCallbackParam
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- دولت
MapLikeObject اختیاری است
RouteHandler
یک RouteHandlerCallback
یا یک RouteHandlerObject
. اکثر APIهای workbox-routing
که کنترلکنندههای مسیر را میپذیرند، هر دو را میپذیرند.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
زمانی که Router
از طریق RouteMatchCallback
با URL/درخواست یک Route
مطابقت داشته باشد، فراخوانی «هندلر» فراخوانی میشود. این پاسخگوی کنترل کننده باید یک Promise
برگرداند که با یک Response
حل می شود.
اگر یک آرایه یا شی غیر خالی توسط RouteMatchCallback
برگردانده شود، به عنوان آرگومان options.params
این کنترل کننده ارسال می شود.
پارامترها
- گزینه ها
برمی گرداند
قول<پاسخ>
RouteHandlerCallbackOptions
گزینهها به یک تابع RouteHandlerCallback
منتقل میشوند.
خواص
- رویداد
ExtendableEvent
- پارامترها
رشته[] | MapLikeObject اختیاری است
- درخواست کنید
درخواست کنید
- آدرس اینترنتی
URL
RouteHandlerObject
یک شی با روش handle
از نوع RouteHandlerCallback
.
یک شی Route
می تواند با یک تابع RouteHandlerCallback
یا این شی RouteHandler
ایجاد شود. مزیت RouteHandler
این است که می توان آن را گسترش داد (همانطور که توسط بسته workbox-strategies
انجام می شود).
خواص
- دسته
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
پاسخ تماس "Match" برای تعیین اینکه آیا یک Route
باید برای یک URL خاص و درخواست اعمال شود یا خیر استفاده می شود. هنگامی که تطبیق در پاسخ به یک رویداد واکشی از مشتری رخ می دهد، شی event
نیز ارائه می شود. با این حال، از آنجایی که فراخوانی بازی را می توان خارج از یک رویداد واکشی فراخوانی کرد، منطق تطبیق نباید فرض کند که شی event
همیشه در دسترس است. اگر پاسخ تماس یک مقدار واقعی را برگرداند، RouteHandlerCallback
مسیر منطبق بلافاصله فراخوانی می شود. اگر مقدار برگشتی یک آرایه یا شی غیر خالی باشد، آن مقدار روی آرگومان options.params
کنترل کننده تنظیم می شود.
پارامترها
- گزینه ها
برمی گرداند
هر
RouteMatchCallbackOptions
گزینهها به یک تابع RouteMatchCallback
منتقل میشوند.
خواص
- رویداد
ExtendableEvent
- درخواست کنید
درخواست کنید
- همان مبدأ
بولی
- آدرس اینترنتی
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
رشته
- پیش کش
رشته
- پیشوند
رشته
- زمان اجرا
رشته
- پسوند
رشته
روش ها
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
- پاسخ Init
ResponseInit
- برمی گرداند
ResponseInit
برمی گرداند
قول<پاسخ>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
تابعی را به مجموعه quotaErrorCallbacks اضافه می کند که در صورت وجود خطای سهمیه اجرا می شود.
پارامترها
- پاسخ به تماس
تابع
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
نام های کش پیش فرض استفاده شده توسط بسته های Workbox را تغییر می دهد. نام های کش به صورت <prefix>-<Cache Name>-<suffix>
تولید می شوند.
پارامترها
- جزئیات
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
این روش منسوخ شده است و در Workbox v7 حذف خواهد شد.
فراخوانی self.skipWaiting () معادل است و باید به جای آن استفاده شود.