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 का इस्तेमाल किया जाता है और हर प्रोजेक्ट के लिए एक ही 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
के रैपर से यह पक्का करने में मदद मिलती है कि आपने इसे सही समय पर कॉल किया है.
skipWaiting रैपर का इस्तेमाल बंद कर दिया गया है
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
स्ट्रिंग
-
इवेंट
ExtendableEvent
-
newResponse
जवाब
-
oldResponse
जवाब देना ज़रूरी नहीं
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
CachedResponseWillBeUsedCallback()
workbox-core.CachedResponseWillBeUsedCallback(
param: CachedResponseWillBeUsedCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void | Response>
CachedResponseWillBeUsedCallbackParam
प्रॉपर्टी
-
cacheName
स्ट्रिंग
-
cachedResponse
जवाब देना ज़रूरी नहीं
-
इवेंट
ExtendableEvent
-
matchOptions
CacheQueryOptions ज़रूरी नहीं
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
CacheKeyWillBeUsedCallback()
workbox-core.CacheKeyWillBeUsedCallback(
param: CacheKeyWillBeUsedCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<string | Request>
CacheKeyWillBeUsedCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
मोड
स्ट्रिंग
-
पैरामीटर
कोई भी ज़रूरी नहीं है
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
CacheWillUpdateCallback()
workbox-core.CacheWillUpdateCallback(
param: CacheWillUpdateCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void | Response>
CacheWillUpdateCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
जवाब
जवाब
-
राज्य
MapLikeObject ज़रूरी नहीं
FetchDidFailCallback()
workbox-core.FetchDidFailCallback(
param: FetchDidFailCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void>
FetchDidFailCallbackParam
प्रॉपर्टी
-
गड़बड़ी
गड़बड़ी
-
इवेंट
ExtendableEvent
-
originalRequest
अनुरोध
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
FetchDidSucceedCallback()
workbox-core.FetchDidSucceedCallback(
param: FetchDidSucceedCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<Response>
FetchDidSucceedCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
जवाब
जवाब
-
राज्य
MapLikeObject ज़रूरी नहीं
HandlerCallbackOptions
HandlerDidCompleteCallback()
workbox-core.HandlerDidCompleteCallback(
param: HandlerDidCompleteCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void>
HandlerDidCompleteCallbackParam
प्रॉपर्टी
-
गड़बड़ी
गड़बड़ी ज़रूरी नहीं है
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
जवाब
जवाब देना ज़रूरी नहीं
-
राज्य
MapLikeObject ज़रूरी नहीं
HandlerDidErrorCallback()
workbox-core.HandlerDidErrorCallback(
param: HandlerDidErrorCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<Response>
HandlerDidErrorCallbackParam
प्रॉपर्टी
-
गड़बड़ी
गड़बड़ी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
HandlerDidRespondCallback()
workbox-core.HandlerDidRespondCallback(
param: HandlerDidRespondCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void>
HandlerDidRespondCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
जवाब
जवाब देना ज़रूरी नहीं
-
राज्य
MapLikeObject ज़रूरी नहीं
HandlerWillRespondCallback()
workbox-core.HandlerWillRespondCallback(
param: HandlerWillRespondCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<Response>
HandlerWillRespondCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
जवाब
जवाब
-
राज्य
MapLikeObject ज़रूरी नहीं
HandlerWillStartCallback()
workbox-core.HandlerWillStartCallback(
param: HandlerWillStartCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<void>
HandlerWillStartCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
ManualHandlerCallback()
workbox-core.ManualHandlerCallback(
options: ManualHandlerCallbackOptions,
)
जब भी कोई Router
अपने RouteMatchCallback
के ज़रिए, Route
के किसी यूआरएल/अनुरोध से मैच करता है, तब "हैंडलर" कॉलबैक को ट्रिगर किया जाता है. इस हैंडलर कॉलबैक से, Response
के साथ हल होने वाला Promise
दिखना चाहिए.
अगर RouteMatchCallback
से कोई खाली नहीं, बल्कि कोई ऐरे या ऑब्जेक्ट मिलता है, तो उसे इस हैंडलर के options.params
आर्ग्युमेंट के तौर पर पास किया जाएगा.
पैरामीटर
-
विकल्प
रिटर्न
-
Promise<Response>
ManualHandlerCallbackOptions
ManualHandlerCallback
फ़ंक्शन में इस्तेमाल किए गए विकल्प.
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
स्ट्रिंग | अनुरोध
MapLikeObject
PluginState
फ़िलहाल, सिर्फ़ MapLikeObject
का इस्तेमाल किया जा रहा है. हालांकि, आने वाले समय में इसकी सीमा बढ़ाई या घटाई जा सकती है.
टाइप
RequestWillFetchCallback()
workbox-core.RequestWillFetchCallback(
param: RequestWillFetchCallbackParam,
)
पैरामीटर
रिटर्न
-
Promise<Request>
RequestWillFetchCallbackParam
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
राज्य
MapLikeObject ज़रूरी नहीं
RouteHandler
RouteHandlerCallback
या RouteHandlerObject
.
workbox-routing
में मौजूद ज़्यादातर एपीआई, रास्ते के हैंडलर को स्वीकार करते हैं.
RouteHandlerCallback()
workbox-core.RouteHandlerCallback(
options: RouteHandlerCallbackOptions,
)
जब भी कोई Router
अपने RouteMatchCallback
के ज़रिए, Route
के किसी यूआरएल/अनुरोध से मैच करता है, तब "हैंडलर" कॉलबैक को ट्रिगर किया जाता है. इस हैंडलर कॉलबैक से, Promise
दिखना चाहिए, जो Response
पर रिज़ॉल्व होता है.
अगर RouteMatchCallback
से कोई खाली नहीं, बल्कि कोई ऐरे या ऑब्जेक्ट मिलता है, तो उसे इस हैंडलर के options.params
आर्ग्युमेंट के तौर पर पास किया जाएगा.
पैरामीटर
-
विकल्प
रिटर्न
-
Promise<Response>
RouteHandlerCallbackOptions
RouteHandlerCallback
फ़ंक्शन में इस्तेमाल किए गए विकल्प.
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
पैरामीटर
string[] | MapLikeObject ज़रूरी नहीं
-
CANNOT TRANSLATE
अनुरोध
-
url
URL
RouteHandlerObject
RouteHandlerCallback
टाइप का handle
तरीका वाला ऑब्जेक्ट.
Route
ऑब्जेक्ट को RouteHandlerCallback
फ़ंक्शन या इस RouteHandler
ऑब्जेक्ट की मदद से बनाया जा सकता है. RouteHandler
का फ़ायदा यह है कि इसकी अवधि बढ़ाई जा सकती है, जैसा कि workbox-strategies
पैकेज में किया जाता है.
प्रॉपर्टी
-
हैंडल
RouteMatchCallback()
workbox-core.RouteMatchCallback(
options: RouteMatchCallbackOptions,
)
"match" कॉलबैक का इस्तेमाल यह तय करने के लिए किया जाता है कि किसी खास यूआरएल और अनुरोध के लिए Route
लागू होना चाहिए या नहीं. जब क्लाइंट से फ़ेच इवेंट के जवाब में मैचिंग होती है, तो event
ऑब्जेक्ट भी दिया जाता है. हालांकि, मैच कॉलबैक को फ़ेच इवेंट के बाहर भी शुरू किया जा सकता है. इसलिए, मैच करने वाले लॉजिक को यह नहीं मानना चाहिए कि event
ऑब्जेक्ट हमेशा उपलब्ध होगा.
अगर मैच कॉलबैक, 'सही' वैल्यू दिखाता है, तो मैच होने वाले रूट का
RouteHandlerCallback
तुरंत लागू हो जाएगा. अगर रिटर्न की गई वैल्यू कोई खाली कलेक्शन या ऑब्जेक्ट है, तो वह वैल्यू हैंडलर के options.params
आर्ग्युमेंट पर सेट की जाएगी.
पैरामीटर
-
विकल्प
रिटर्न
-
कोई
RouteMatchCallbackOptions
RouteMatchCallback
फ़ंक्शन में इस्तेमाल किए गए विकल्प.
प्रॉपर्टी
-
इवेंट
ExtendableEvent
-
CANNOT TRANSLATE
अनुरोध
-
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
का इस्तेमाल पहले से कैश मेमोरी में सेव ऐसेट के लिए किया जाता है, cacheNames.googleAnalytics
का इस्तेमाल workbox-google-analytics
, 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}
वाले एक ऑब्जेक्ट के साथ लागू किया जाएगा. इस फ़ंक्शन की रिटर्न वैल्यू का इस्तेमाल, नए Response
के लिए ResponseInit
के तौर पर किया जाएगा. वैल्यू बदलने के लिए, पास किए गए पैरामीटर में बदलाव करें और उसे दिखाएं या फिर एक नया ऑब्जेक्ट दिखाएं.
इस तरीके को जान-बूझकर, एक ही ऑरिजिन के रिस्पॉन्स तक सीमित रखा गया है. भले ही, सीओआरएस का इस्तेमाल किया गया हो या नहीं.
पैरामीटर
-
जवाब
जवाब
-
मॉडिफ़ायर
फ़ंक्शन ज़रूरी नहीं
modifier
पैरामीटर इस तरह दिखता है:(responseInit: ResponseInit) => ResponseInit
-
responseInit
ResponseInit
-
returns
ResponseInit
-
रिटर्न
-
Promise<Response>
registerQuotaErrorCallback()
workbox-core.registerQuotaErrorCallback(
callback: Function,
)
quotaErrorCallbacks के सेट में एक फ़ंक्शन जोड़ता है. यह फ़ंक्शन, कोटा से जुड़ी गड़बड़ी होने पर चालू होगा.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
setCacheNameDetails()
workbox-core.setCacheNameDetails(
details: PartialCacheNameDetails,
)
Workbox पैकेज के इस्तेमाल किए जाने वाले डिफ़ॉल्ट कैश मेमोरी के नामों में बदलाव करता है.
कैश मेमोरी के नाम <prefix>-<Cache Name>-<suffix>
के तौर पर जनरेट होते हैं.
पैरामीटर
-
विवरण
PartialCacheNameDetails
skipWaiting()
workbox-core.skipWaiting()
इस तरीके का इस्तेमाल नहीं किया जा सकता. इसे Workbox के वर्शन 7 में हटा दिया जाएगा.
self.skipWaiting() का इस्तेमाल करने पर भी यही काम होता है. इसलिए, इसके बजाय इसका इस्तेमाल किया जाना चाहिए.