वर्कबॉक्स-कोर

वर्कबॉक्स को मॉड्यूलर बनाया गया है. इससे डेवलपर अपनी पसंद के आइटम एक ही फ़ाइल में डाउनलोड किए बिना चुन सकते हैं.

हालांकि, अलग-अलग मॉड्यूल के बीच ओवरलैप होता है. जैसे, हर मॉड्यूल को कंसोल से इंटरैक्ट करने, काम की गड़बड़ियां करने, और नेटवर्क या कैश का इस्तेमाल करने की ज़रूरत होगी. हर मॉड्यूल एक ही लॉजिक को लागू न करे, इसके लिए 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 का इस्तेमाल किया जाता है और हर प्रोजेक्ट के लिए एक ही localhost पोर्ट का इस्तेमाल किया जाता है, तो हर मॉड्यूल के लिए कस्टम प्रीफ़िक्स सेट करने से कैश मेमोरी का आपस में टकराव नहीं होगा.

क्लाइंट का दावा

कुछ डेवलपर एक नया सर्विस वर्कर पब्लिश करना चाहते हैं और इसके चालू होते ही, पहले से खुले वेब पेजों को कंट्रोल करना चाहते हैं, जो डिफ़ॉल्ट रूप से नहीं होता.

अगर आपको लगता है कि आपके लिए ऐसा व्यवहार करना है, तो 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();

workbox-core में clientsClaim() तरीके का इस्तेमाल करने पर, आपके सर्विस वर्कर से activate इवेंट लिसनर अपने-आप जुड़ जाता है. साथ ही, इसके अंदर self.clients.claim() को कॉल किया जाता है. मौजूदा सर्विस वर्कर के चालू होने से पहले, self.clients.claim() को कॉल करने से रनटाइम में अपवाद लागू होगा. साथ ही, workbox-core के रैपर से यह पक्का करने में मदद मिलती है कि आप सही समय पर कॉल करें.

स्किपवेटिंग रैपर अब काम नहीं करता

Workbox v6 के पहले, डेवलपर को workbox-core के skipWaiting() तरीके का इस्तेमाल करने के लिए भी बढ़ावा दिया जाता था. हालांकि, अगर डेवलपर साफ़ तौर पर self.skipWaiting() को कॉल करते हैं, तो इस तरीके से उन्हें मिलने वाले फ़ायदों के अलावा कोई फ़ायदा नहीं होगा.

लेगसी workbox-core रैपर ने एक install इवेंट हैंडलर भी रजिस्टर किया है जिसमें self.skipWaiting() को कॉल किया गया था. इसलिए, इंस्टॉलेशन पूरा होने के बाद, अगर रैपर को message जैसे किसी दूसरे इवेंट हैंडलर में कॉल किया जाता है, तो वह उम्मीद के मुताबिक काम नहीं करेगा.

इन वजहों से, workbox-core का skipWaiting() काम नहीं करता है. साथ ही, डेवलपर को सीधे self.skipWaiting() को कॉल करने पर स्विच कर देना चाहिए. self.clients.claim() के उलट, "गलत" समय पर कॉल करने पर self.skipWaiting() अपवाद नहीं दिखाएगा, इसलिए इसे किसी इवेंट हैंडलर में रैप करने की ज़रूरत नहीं है.

टाइप

CacheDidUpdateCallback()

workbox-core.CacheDidUpdateCallback(
  param: CacheDidUpdateCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void>

CacheDidUpdateCallbackParam

प्रॉपर्टी

  • cacheName

    स्ट्रिंग

  • event

    ExtendableEvent

  • newResponse

    जवाब

  • oldResponse

    जवाब ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

CachedResponseWillBeUsedCallback()

workbox-core.CachedResponseWillBeUsedCallback(
  param: CachedResponseWillBeUsedCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void | Response>

CachedResponseWillBeUsedCallbackParam

प्रॉपर्टी

  • cacheName

    स्ट्रिंग

  • cachedResponse

    जवाब ज़रूरी नहीं

  • event

    ExtendableEvent

  • matchOptions

    CashQueryOptions ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

CacheKeyWillBeUsedCallback()

workbox-core.CacheKeyWillBeUsedCallback(
  param: CacheKeyWillBeUsedCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<string | Request>

CacheKeyWillBeUsedCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • मोड

    स्ट्रिंग

  • params

    कोई ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

CacheWillUpdateCallback()

workbox-core.CacheWillUpdateCallback(
  param: CacheWillUpdateCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void | Response>

CacheWillUpdateCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • state

    MapLikeObject ज़रूरी नहीं है

FetchDidFailCallback()

workbox-core.FetchDidFailCallback(
  param: FetchDidFailCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void>

FetchDidFailCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी

  • event

    ExtendableEvent

  • originalRequest

    अनुरोध

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

FetchDidSucceedCallback()

workbox-core.FetchDidSucceedCallback(
  param: FetchDidSucceedCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<Response>

FetchDidSucceedCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • state

    MapLikeObject ज़रूरी नहीं है

HandlerCallbackOptions

HandlerDidCompleteCallback()

workbox-core.HandlerDidCompleteCallback(
  param: HandlerDidCompleteCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void>

HandlerDidCompleteCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी ज़रूरी नहीं

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब ज़रूरी नहीं

  • state

    MapLikeObject ज़रूरी नहीं है

HandlerDidErrorCallback()

workbox-core.HandlerDidErrorCallback(
  param: HandlerDidErrorCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<Response>

HandlerDidErrorCallbackParam

प्रॉपर्टी

  • गड़बड़ी

    गड़बड़ी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

HandlerDidRespondCallback()

workbox-core.HandlerDidRespondCallback(
  param: HandlerDidRespondCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void>

HandlerDidRespondCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब ज़रूरी नहीं

  • state

    MapLikeObject ज़रूरी नहीं है

HandlerWillRespondCallback()

workbox-core.HandlerWillRespondCallback(
  param: HandlerWillRespondCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<Response>

HandlerWillRespondCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • जवाब

    जवाब

  • state

    MapLikeObject ज़रूरी नहीं है

HandlerWillStartCallback()

workbox-core.HandlerWillStartCallback(
  param: HandlerWillStartCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • Promise<void>

HandlerWillStartCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

ManualHandlerCallback()

workbox-core.ManualHandlerCallback(
  options: ManualHandlerCallbackOptions,
)

जब भी Router, RouteMatchCallback के ज़रिए, Route से किसी यूआरएल/अनुरोध से मैच करता है, तो "हैंडलर" कॉलबैक शुरू हो जाता है. इस हैंडलर कॉलबैक को, ऐसा Promise दिखाना चाहिए जो Response के साथ रिज़ॉल्व हो.

अगर RouteMatchCallback से कोई ऐसा अरे या ऑब्जेक्ट मिलता है जो खाली नहीं है, तो उसे इस हैंडलर के options.params तर्क के तौर पर पास किया जाएगा.

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<Response>

ManualHandlerCallbackOptions

विकल्प, ManualHandlerCallback फ़ंक्शन को पास किए गए.

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    स्ट्रिंग | अनुरोध

MapLikeObject

PluginState

अभी के लिए एक सादे MapLikeObject का इस्तेमाल किया जा रहा है, लेकिन आने वाले समय में इसे बढ़ाया/प्रतिबंधित किया जा सकता है.

टाइप

RequestWillFetchCallback()

workbox-core.RequestWillFetchCallback(
  param: RequestWillFetchCallbackParam,
)

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<अनुरोध>

RequestWillFetchCallbackParam

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • state

    MapLikeObject ज़रूरी नहीं है

RouteHandler

RouteHandlerCallback या RouteHandlerObject. रूट हैंडलर को स्वीकार करने वाले workbox-routing के ज़्यादातर एपीआई इनमें से कोई एक लेते हैं.

RouteHandlerCallback()

workbox-core.RouteHandlerCallback(
  options: RouteHandlerCallbackOptions,
)

जब भी Router, RouteMatchCallback के ज़रिए, Route से किसी यूआरएल/अनुरोध से मैच करता है, तो "हैंडलर" कॉलबैक शुरू हो जाता है. इस हैंडलर कॉलबैक को, ऐसा Promise दिखाना चाहिए जो Response के साथ रिज़ॉल्व हो.

अगर RouteMatchCallback से कोई ऐसा अरे या ऑब्जेक्ट मिलता है जो खाली नहीं है, तो उसे इस हैंडलर के options.params तर्क के तौर पर पास किया जाएगा.

पैरामीटर

लौटाए गए प्रॉडक्ट

  • वादा<Response>

RouteHandlerCallbackOptions

विकल्प, RouteHandlerCallback फ़ंक्शन को पास किए गए.

प्रॉपर्टी

  • event

    ExtendableEvent

  • params

    स्ट्रिंग[] | MapLikeObject ज़रूरी नहीं

  • CANNOT TRANSLATE

    अनुरोध

  • यूआरएल

    यूआरएल

RouteHandlerObject

RouteHandlerCallback टाइप के handle तरीके वाला ऑब्जेक्ट.

Route ऑब्जेक्ट को या तो RouteHandlerCallback फ़ंक्शन या इस RouteHandler ऑब्जेक्ट का इस्तेमाल करके बनाया जा सकता है. RouteHandler का फ़ायदा यह है कि इसे बढ़ाया जा सकता है (जैसा कि workbox-strategies पैकेज में होता है).

प्रॉपर्टी

RouteMatchCallback()

workbox-core.RouteMatchCallback(
  options: RouteMatchCallbackOptions,
)

"match" कॉलबैक का इस्तेमाल यह तय करने के लिए किया जाता है कि Route को किसी खास यूआरएल और अनुरोध के लिए लागू करना चाहिए या नहीं. जब क्लाइंट से किसी फ़ेच इवेंट की वजह से मैच होता है, तो event ऑब्जेक्ट भी दिया जाता है. हालांकि, मैच कॉलबैक को, फ़ेच इवेंट के बाहर शुरू किया जा सकता है. इसलिए, मैचिंग लॉजिक को यह नहीं मानना चाहिए कि event ऑब्जेक्ट हमेशा उपलब्ध रहेगा. अगर मैच कॉलबैक सही वैल्यू देता है, तो मैच करने वाले रूट की RouteHandlerCallback को तुरंत शुरू कर दिया जाएगा. अगर दिखाया जाने वाला मान कोई ऐसा अरे या ऑब्जेक्ट है जो खाली नहीं है, तो वह वैल्यू हैंडलर के options.params आर्ग्युमेंट पर सेट की जाएगी.

पैरामीटर

लौटाए गए प्रॉडक्ट

  • कोई भी

RouteMatchCallbackOptions

विकल्प, RouteMatchCallback फ़ंक्शन को पास किए गए.

प्रॉपर्टी

  • event

    ExtendableEvent

  • CANNOT TRANSLATE

    अनुरोध

  • sameOrigin

    boolean

  • यूआरएल

    यूआरएल

WorkboxPlugin

एक ऑब्जेक्ट, जिसमें फ़ेच और कैश मेमोरी से जुड़ी कार्रवाइयों के लिए, वैकल्पिक लाइफ़साइकल कॉलबैक प्रॉपर्टी मौजूद होती हैं.

प्रॉपर्टी

WorkboxPluginCallbackParam

प्रॉपर्टी

प्रॉपर्टी

cacheNames

वर्कबॉक्स में इस्तेमाल किए जाने वाले मौजूदा कैश नाम और प्रीफ़िक्स/सफ़िक्स पाएं.

cacheNames.precache का इस्तेमाल, पहले से कैश मेमोरी में सेव की गई एसेट के लिए किया जाता है, analytics.js को स्टोर करने के लिए workbox-google-analytics, cacheNames.googleAnalytics का इस्तेमाल करता है, और बाकी सभी के लिए 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}. इस फ़ंक्शन की रिटर्न वैल्यू को नए Response के लिए, ResponseInit के तौर पर इस्तेमाल किया जाएगा. वैल्यू बदलने के लिए, पास किए गए पैरामीटर में बदलाव करें और उसे वापस करें या पूरी तरह से नया ऑब्जेक्ट दिखाएं.

यह तरीका जान-बूझकर एक जैसे ऑरिजिन वाले जवाबों तक सीमित है, चाहे सीओआरएस का इस्तेमाल किया गया हो या नहीं.

पैरामीटर

  • जवाब

    जवाब

  • मॉडिफ़ायर

    फ़ंक्शन ज़रूरी नहीं

    modifier पैरामीटर ऐसा दिखता है:

    (responseInit: ResponseInit) => ResponseInit

    • responseInit

      ResponseInit

    • returns

      ResponseInit

लौटाए गए प्रॉडक्ट

  • वादा<Response>

registerQuotaErrorCallback()

workbox-core.registerQuotaErrorCallback(
  callback: Function,
)

कोटे एररकॉलबैक के सेट में फ़ंक्शन जोड़ता है. कोटा से जुड़ी गड़बड़ी होने पर ये कोड चलाए जाते हैं.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

setCacheNameDetails()

workbox-core.setCacheNameDetails(
  details: PartialCacheNameDetails,
)

वर्कबॉक्स पैकेज में इस्तेमाल किए जाने वाले डिफ़ॉल्ट कैश नामों में बदलाव करता है. कैश मेमोरी के नाम, <prefix>-<Cache Name>-<suffix> के तौर पर जनरेट किए जाते हैं.

पैरामीटर

  • जानकारी

    PartialCacheNameDetails

skipWaiting()

workbox-core.skipWaiting()

यह तरीका अब काम नहीं करता. इसे Workbox v7 से हटा दिया जाएगा.

Self.skipveing() को कॉल करने की ज़रूरत एक जैसी होती है. इसके बजाय, इसका इस्तेमाल किया जाना चाहिए.