جعبه کار

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,
)

مولفه های

برمی گرداند

  • Promise<string|Request>

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 می توان برای بازیابی فقط مقدار پسوند فعلی استفاده کرد.

تایپ کنید

هدف - شی

خواص

  • تجزیه و تحلیل ترافیک گوگل

    رشته

  • پیش کش

    رشته

  • پیشوند

    رشته

  • زمان اجرا

    رشته

  • پسوند

    رشته

مواد و روش ها

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