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