يوفّر Workbox مكوّنَين إضافيَين من webpack: أحدهما ينشئ مشغّل خدمات كاملاً لك والآخر ينشئ قائمة بمواد العرض لتخزينها بشكل مسبق والتي يتم إدخالها في ملف مشغّل الخدمات.
يتم تنفيذ المكوّنات الإضافية كأنّها فئتان في وحدة workbox-webpack-plugin
، باسم
GenerateSW
وInjectManifest
. يمكن أن تساعدك الإجابات عن الأسئلة التالية في اختيار المكوّن الإضافي المناسب والإعدادات المناسبة لاستخدامه.
المكوّن الإضافي الذي يجب استخدامه
GenerateSW
سينشئ المكوّن الإضافي GenerateSW
ملف عامل خدمات لك
ويضيفه إلى مسار مواد عرض حزمة الويب.
حالات استخدام GenerateSW
- تريد التخزين المؤقت للملفات مسبقًا.
- إذا كانت لديك احتياجات بسيطة لتخزين المحتوى مؤقتًا أثناء التشغيل
حالات عدم استخدام GenerateSW
- إذا كنت تريد استخدام ميزات Service Worker الأخرى (مثل Web Push)
- إذا كنت تريد استيراد نصوص برمجية إضافية أو إضافة منطق إضافي لاستراتيجيات التخزين المؤقت المخصّصة.
InjectManifest
سينشئ المكوّن الإضافي InjectManifest
قائمة بعناوين URL التي سيتم تخزينها مؤقتًا مسبقًا، ثم تتم إضافة بيان التخزين المؤقت المُسبَق هذا إلى ملف عامل الخدمة الحالي. بخلاف ذلك، سيترك الملف كما هو.
حالات استخدام InjectManifest
- أردت التحكّم بشكل أكبر في مشغّل الخدمات.
- إذا أردت الاحتفاظ بنسخة مؤقتة من الملفات
- عليك تخصيص عمليات التوجيه والاستراتيجيات.
- إذا كنت تريد استخدام worker الخدمة مع ميزات أخرى في المنصة (مثل Web Push)
حالات عدم استخدام InjectManifest
- إذا كنت تريد الطريقة الأسهل لإضافة مشغّل خدمات إلى موقعك الإلكتروني
المكون الإضافي GenerateSW
يمكنك إضافة المكوّن الإضافي GenerateSW
إلى إعدادات webpack على النحو التالي:
// Inside of webpack.config.js:
const {GenerateSW} = require('workbox-webpack-plugin');
module.exports = {
// Other webpack config...
plugins: [
// Other plugins...
new GenerateSW({
// These are some common options, and not all are required.
// Consult the docs for more info.
exclude: [/.../, '...'],
maximumFileSizeToCacheInBytes: ...,
navigateFallback: '...',
runtimeCaching: [{
// Routing via a matchCallback function:
urlPattern: ({request, url}) => ...,
handler: '...',
options: {
cacheName: '...',
expiration: {
maxEntries: ...,
},
},
}, {
// Routing via a RegExp:
urlPattern: new RegExp('...'),
handler: '...',
options: {
cacheName: '...',
plugins: [..., ...],
},
}],
skipWaiting: ...,
}),
],
};
سيؤدي ذلك إلى إنشاء عامل خدمة مع إعداد التخزين المؤقت المُسبَق لجميع مواد عرض webpack التي تم اختيارها من خلال الإعدادات وقواعد التخزين المؤقت أثناء التشغيل المقدَّمة.
يمكن العثور على مجموعة كاملة من خيارات الإعداد في المستندات المرجعية.
المكوّن الإضافي InjectManifest
يمكنك إضافة المكوّن الإضافي InjectManifest
إلى إعدادات webpack على النحو التالي:
// Inside of webpack.config.js:
const {InjectManifest} = require('workbox-webpack-plugin');
module.exports = {
// Other webpack config...
plugins: [
// Other plugins...
new InjectManifest({
// These are some common options, and not all are required.
// Consult the docs for more info.
exclude: [/.../, '...'],
maximumFileSizeToCacheInBytes: ...,
swSrc: '...',
}),
],
};
سيؤدي ذلك إلى إنشاء بيان تخزين مؤقت مُسبَق استنادًا إلى مواد عرض webpack التي تم اختيارها من خلال الإعدادات وإدراجها في ملف worker الخدمة المجمّع والمُجمَّع.
يمكن العثور على مجموعة كاملة من خيارات الضبط في المستندات المرجعية.
معلومات إضافية
يمكن العثور على إرشادات حول استخدام المكوّنات الإضافية في سياق عملية إنشاء أكبر باستخدام webpack في القسم "تطبيق الويب التفاعلي" من مستندات webpack.
الأنواع
GenerateSW
تتيح هذه الفئة إنشاء ملف مشغّل خدمات جديد وجاهز للاستخدام كجزء من عملية تجميع حِزم الويب.
يمكنك استخدام مثيل GenerateSW
في
مصفوفة plugins
لإعدادات حزمة الويب.
// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
new GenerateSW({
exclude: [/.../, '...'],
maximumFileSizeToCacheInBytes: ...,
navigateFallback: '...',
runtimeCaching: [{
// Routing via a matchCallback function:
urlPattern: ({request, url}) => ...,
handler: '...',
options: {
cacheName: '...',
expiration: {
maxEntries: ...,
},
},
}, {
// Routing via a RegExp:
urlPattern: new RegExp('...'),
handler: '...',
options: {
cacheName: '...',
plugins: [..., ...],
},
}],
skipWaiting: ...,
});
أماكن إقامة
-
constructor
غير صالح
تنشئ مثيلاً لـ GenerateSW.
تظهر دالة
constructor
على النحو التالي:(config?: GenerateSWConfig) => {...}
-
config
GenerateSWConfig اختياري
-
returns
-
-
config
GenerateSWConfig
أماكن إقامة
-
additionalManifestEntries
(string | ManifestEntry)[] اختياري
قائمة بالإدخالات التي سيتم تخزينها مؤقتًا مسبقًا، بالإضافة إلى أي إدخالات يتم إنشاؤها كجزء من إعدادات التصميم
-
babelPresetEnvTargets
سلسلة اختيارية
القيمة التلقائية هي: ["chrome >= 56"]
الاستهدافات التي يتم تمريرها إلى
babel-preset-env
عند تحويل حِزمة worker الخدمة -
cacheId
سلسلة اختيارية
رقم تعريف اختياري يتم إرفاقه بأسماء ذاكرة التخزين المؤقت. يكون ذلك مفيدًا في المقام الأول لعمليات تطوير التطبيقات على الأجهزة المحلية التي قد يتم عرض مواقع متعددة منها من المصدر نفسه
http://localhost:port
. -
أجزاء
سلسلة اختيارية
اسم جزء واحد أو أكثر يجب تضمين ملفات الإخراج المقابلة له في بيان التخزين المؤقت المُسبَق
-
cleanupOutdatedCaches
منطقي اختياري
القيمة التلقائية هي: false
ما إذا كان يجب أن تحاول Workbox تحديد وحذف أي ذاكرات تخزين مسبقة تم إنشاؤها بواسطة إصدارات قديمة وغير متوافقة.
-
clientsClaim
قيمة منطقية اختيارية
القيمة التلقائية هي: false
ما إذا كان يجب على عامل الخدمة بدء التحكم في أي عملاء حاليين فور تنشيطه أم لا.
-
directoryIndex
سلسلة اختيارية
إذا تعذّر مطابقة طلب التنقّل لعنوان URL ينتهي بـ
/
مع عنوان URL تم تخزينه مسبقًا، سيتم إلحاق هذه القيمة بعنوان URL وسيتم التحقّق من مطابقة التخزين المُسبَق. يجب ضبط هذا الخيار على القيمة التي يستخدمها خادم الويب في فهرس الدليل. -
disableDevLogs
منطقي اختياري
القيمة التلقائية هي: false
-
dontCacheBustURLsMatching
التعبير العادي اختياري
يُفترض أن يتم نسخ مواد العرض التي تتطابق مع ذلك إلى نسخة فريدة من خلال عنوان URL الخاص بها، وسيتم إعفاؤها من عملية إيقاف ذاكرة التخزين المؤقت العادية التي يتم تنفيذها عند تعبئة ذاكرة التخزين المؤقت في ذاكرة التخزين المؤقت. على الرغم من أنّ ذلك ليس مطلوبًا، ننصحك في حال كانت عملية الإنشاء الحالية تُدرج قيمة
[hash]
في كل اسم ملف، بتقديم تعبير عادي سيرصد ذلك، لأنّ ذلك سيقلّل من معدل نقل البيانات المستخدَم عند التخزين المؤقت المُسبَق. -
استبعاد
(string | RegExp | function)[] اختيارية
محدد واحد أو أكثر يُستخدَم لاستبعاد مواد العرض من بيان التخزين المؤقت المُسبَق ويتم تفسير ذلك باتّباع القواعد نفسها المُستخدَمة في خيار
exclude
العادي فيwebpack
. إذا لم يتم تقديمها، تكون القيمة التلقائية هي[/\.map$/, /^manifest.*\.js$]
. -
excludeChunks
سلسلة اختيارية
اسم جزء واحد أو أكثر يجب استبعاد ملفات الإخراج المقابلة له من بيان التخزين المؤقت المُسبَق
-
ignoreURLParametersMatching
RegExp[] اختيارية
ستتم إزالة أيّ أسماء لمَعلمات بحث تتطابق مع أحد التعبيرات العادية في هذه السلسلة قبل البحث عن مطابقة في ذاكرة التخزين المؤقت المُسبَق. يكون ذلك مفيدًا إذا كان المستخدمون قد يطلبون عناوين URL تحتوي على مَعلمات عناوين URL مثلاً تُستخدَم لتتبُّع مصدر الزيارات. إذا لم يتم تقديمها، ستكون القيمة التلقائية هي
[/^utm_/, /^fbclid$/]
. -
importScripts
سلسلة[] اختيارية
قائمة بملفات JavaScript التي يجب تمريرها إلى
importScripts()
داخل ملف worker الذي تم إنشاؤه يكون هذا مفيدًا عندما تريد السماح لـ Workbox بإنشاء ملف مشغّل الخدمات ذي المستوى الأعلى، ولكنك تريد تضمين بعض الرموز الإضافية، مثل أداة معالجة أحداث الدفع. -
importScriptsViaChunks
سلسلة اختيارية
اسم واحد أو أكثر من أجزاء webpack سيتم تضمين محتوى هذه الأجزاء في الخدمة العاملة التي تم إنشاؤها، وذلك من خلال طلب إلى
importScripts()
. -
تتضمّن
(سلسلة | تعبير عادي | دالة)[] اختياري
محدد واحد أو أكثر يُستخدَم لتضمين مواد العرض في بيان التخزين المؤقت المُسبَق ويتم تفسير ذلك باتّباع القواعد نفسها المُستخدَمة في خيار
include
العادي فيwebpack
. -
inlineWorkboxRuntime
منطقي اختياري
القيمة التلقائية هي: false
ما إذا كان يجب تضمين رمز التشغيل لمكتبة Workbox في عامل الخدمة من المستوى الأعلى، أو تقسيمه إلى ملف منفصل يجب نشره إلى جانب عامل الخدمة ويؤدي فصل وقت التشغيل إلى عدم اضطرار المستخدمين إلى إعادة تنزيل رمز Workbox في كل مرة يتم فيها تغيير عامل الخدمة من المستوى الأعلى.
-
manifestEntries
ManifestEntry[] اختيارية
-
manifestTransforms
ManifestTransform[] اختياري
دالة واحدة أو أكثر سيتم تطبيقها بشكل تسلسلي على البيان الذي تم إنشاؤه. إذا تم تحديد
modifyURLPrefix
أوdontCacheBustURLsMatching
أيضًا، سيتم تطبيق عمليات التحويل المقابلة أولاً. -
maximumFileSizeToCacheInBytes
رقم اختياري
القيمة التلقائية هي: 2097152
يمكن استخدام هذه القيمة لتحديد الحد الأقصى لحجم الملفات التي سيتم تخزينها مؤقتًا مسبقًا. ويمنعك ذلك من تخزين ملفات كبيرة جدًا مسبقًا بدون قصد قد تتطابق عن طريق الخطأ مع أحد أنماطك.
-
الوضع
سلسلة اختيارية
في حال ضبطها على "الإصدار العلني"، سيتم إنشاء حِزمة عامل خدمة محسّنة تُستبعد معلومات تصحيح الأخطاء. في حال عدم ضبطها صراحةً هنا، سيتم استخدام قيمة
mode
التي تم ضبطها في عملية تجميعwebpack
الحالية. -
modifyURLPrefix
العنصر اختياري
يشير ذلك المصطلح إلى بادئات سلسلة ربط كائن بقيم سلسلة الاستبدال. ويمكن استخدام ذلك، على سبيل المثال، إزالة أو إضافة بادئة مسار من إدخال في البيان إذا لم يتوافق إعداد استضافة الويب مع إعداد نظام الملفات على الجهاز. كبديلٍ يتمتع بمرونة أكبر، يمكنك استخدام الخيار
manifestTransforms
وتقديم دالة تعدّل الإدخالات في البيان باستخدام أي منطق تقدّمه.مثال على الاستخدام:
// Replace a '/dist/' prefix with '/', and also prepend // '/static' to every URL. modifyURLPrefix: { '/dist/': '/', '': '/static', }
-
سلسلة اختيارية
القيمة التلقائية هي: null
في حال تحديده، سيتم تنفيذ جميع طلبات التنقّل لعناوين URL التي لم يتم تخزينها مؤقتًا باستخدام رمز HTML في عنوان URL الذي تم تقديمه. يجب إدخال عنوان URL لمستند HTML المدرَج في بيان التخزين المؤقت الخاص بك. يُقصد استخدام هذا الإجراء في أحد سيناريوهات التطبيقات المكوّنة من صفحة واحدة، حيث تريد أن تستخدم جميع عمليات التنقّل رمز HTML المشترَك لإطار التطبيق.
-
التعبير العادي[] اختياري
صفيف اختياري من التعبيرات العادية التي تحدّ من عناوين URL التي ينطبق عليها
navigateFallback
السلوك الذي تم ضبطه يكون هذا مفيدًا إذا كان يجب التعامل مع مجموعة فرعية فقط من عناوين URL لموقعك الإلكتروني على أنّها جزء من تطبيق صفحة واحدة. في حال ضبط كل منnavigateFallbackDenylist
وnavigateFallbackAllowlist
، تكون القائمة المحظورة هي المرجع الأول.ملاحظة: قد يتم تقييم تعبيرات RegExp هذه مقابل كل عنوان URL للوجهة أثناء التنقّل. تجنَّب استخدام التعبيرات العادية المعقدة، وإلا قد يواجه المستخدمون تأخيرات عند التنقّل في موقعك الإلكتروني.
-
RegExp[] اختيارية
صفيف اختياري من التعبيرات العادية التي تحدّ من عناوين URL التي ينطبق عليها
navigateFallback
السلوك الذي تم ضبطه يكون هذا مفيدًا إذا كان يجب التعامل مع مجموعة فرعية فقط من عناوين URL لموقعك الإلكتروني على أنّها جزء من تطبيق صفحة واحدة. في حال ضبط كل منnavigateFallbackDenylist
وnavigateFallbackAllowlist
، تُمنَح القائمة المحظورة الأولوية.ملاحظة: قد يتم تقييم تعبيرات RegExp هذه مقابل كل عنوان URL للوجهة أثناء التنقّل. تجنَّب استخدام التعبيرات العادية المعقدة، وإلا قد يواجه المستخدمون تأخيرات عند التنقّل في موقعك الإلكتروني.
-
منطقي اختياري
القيمة التلقائية هي: false
لتحديد ما إذا كان سيتم تفعيل التحميل المسبق للتنقّل في مشغّل الخدمات الذي تم إنشاؤه. عند ضبط القيمة على "صحيح"، يجب أيضًا استخدام
runtimeCaching
لإعداد استراتيجية استجابة مناسبة تتطابق مع طلبات التنقّل، والاستفادة من الردّ المحمَّل مسبقًا. -
offlineGoogleAnalytics
منطقي | GoogleAnalyticsInitializeOptions اختياري
القيمة التلقائية هي: false
للتحكم في ما إذا كان سيتم تضمين دعم "إحصاءات Google" بلا اتصال بالإنترنت. عند
true
، تتم إضافة طلبinitialize()
فيworkbox-google-analytics
إلى عامل الخدمة الذي تم إنشاؤه. عند ضبطه علىObject
، سيتم تمرير هذا العنصر إلى طلبinitialize()
، ما يتيح لك تخصيص السلوك. -
runtimeCaching
RuntimeCaching[] اختياري
عند استخدام أدوات الإنشاء في Workbox لإنشاء الخدمة العاملة، يمكنك تحديد إعداد واحد أو أكثر من إعدادات التخزين المؤقت أثناء التشغيل. ويتم بعد ذلك تحويلها إلى طلبات
workbox-routing.registerRoute
باستخدام إعدادات المطابقة والمعالج التي تحدّدها.للاطّلاع على جميع الخيارات، يُرجى الاطّلاع على مستندات
workbox-build.RuntimeCaching
. يوضّح المثال أدناه إعدادًا نموذجيًا، مع تحديد مجريتَي ejecutant: -
skipWaiting
منطقي اختياري
القيمة التلقائية هي: false
ما إذا كان سيتمّ إضافة طلب غير مشروط إلى
skipWaiting()
في الخدمة العاملة التي تمّ إنشاؤها. إذا كانfalse
، سيتم بدلاً من ذلك إضافة مستمعmessage
، ما يسمح لصفحات العميل بتشغيلskipWaiting()
من خلال استدعاءpostMessage({type: 'SKIP_WAITING'})
في عامل خدمة في انتظار. -
sourcemap
منطقي اختياري
القيمة التلقائية هي: true
ما إذا كان سيتم إنشاء خريطة مصدر لملفات مشغّل الخدمات التي تم إنشاؤها.
-
swDest
سلسلة اختيارية
القيمة التلقائية هي: "service-worker.js"
اسم مادة العرض لملف الخدمة الذي أنشأه هذا المكوّن الإضافي.
InjectManifest
تتيح هذه الفئة تجميع ملف مشغّل خدمات يتم تقديمه من خلال swSrc
،
وإدخال قائمة بعناوين URL ومعلومات المراجعة في مشغّل الخدمات هذا للتخزين المؤقت استنادًا إلى مسار مواد عرض حزمة الويب.
استخدِم مثيلًا من InjectManifest
في ملف ملف plugins
في ملف إعدادات
webpack.
بالإضافة إلى إدراج البيان، سيُجري هذا المكوّن الإضافي عملية تجميع
لملف swSrc
باستخدام الخيارات من إعدادات webpack الرئيسية.
// The following lists some common options; see the rest of the documentation
// for the full set of options and defaults.
new InjectManifest({
exclude: [/.../, '...'],
maximumFileSizeToCacheInBytes: ...,
swSrc: '...',
});
أماكن إقامة
-
constructor
غير صالح
لإنشاء مثيل من InjectManifest.
تبدو الدالة
constructor
على النحو التالي:(config: WebpackInjectManifestOptions) => {...}
-
config
-
returns
-
-
config
أماكن إقامة
default
النوع
عنصر
أماكن إقامة
-
GenerateSW
query
-
InjectManifest
query