جعبه کار

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() در صورت فراخوانی در زمان "اشتباه" استثنایی ایجاد نمی کند، بنابراین نیازی به قرار دادن آن در یک کنترل کننده رویداد نیست.

انواع

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

پارامترها

برمی گرداند

  • قول<باطل>

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 اختیاری است

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

پارامترها

برمی گرداند

  • قول<باطل>

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

یک شی با ویژگی های بازگشت به تماس چرخه حیات اختیاری برای عملیات واکشی و کش.

خواص

WorkboxPluginCallbackParam

خواص

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 () معادل است و باید به جای آن استفاده شود.