Workbox دو پلاگین بسته وب را ارائه می دهد: یکی که یک سرویس کار کامل را برای شما ایجاد می کند و دیگری که لیستی از دارایی ها را برای پیش کش ایجاد می کند که به فایل سرویس کارگر تزریق می شود.
پلاگین ها به صورت دو کلاس در ماژول workbox-webpack-plugin
به نام های GenerateSW
و InjectManifest
پیاده سازی می شوند. پاسخ به سوالات زیر می تواند به شما در انتخاب افزونه و پیکربندی مناسب برای استفاده کمک کند.
از کدام افزونه استفاده کنید
GenerateSW
افزونه GenerateSW
یک فایل Service Worker برای شما ایجاد می کند و آن را به خط لوله دارایی وب پک اضافه می کند.
زمان استفاده از GenerateSW
- می خواهید فایل ها را پیش کش کنید.
- شما نیازهای ذخیره سازی در زمان اجرا ساده دارید.
زمانی که از GenerateSW
استفاده نکنید
- میخواهید از سایر ویژگیهای Service Worker (به عنوان مثال Web Push ) استفاده کنید.
- میخواهید اسکریپتهای اضافی را وارد کنید، یا منطق اضافی برای استراتژیهای کش سفارشی اضافه کنید.
InjectManifest
افزونه InjectManifest
لیستی از URL ها را برای پیش کش ایجاد می کند و آن مانیفست پیش کش را به فایل سرویس کارگر موجود اضافه می کند. در غیر این صورت فایل را همانطور که هست باقی می گذارد.
زمان استفاده از InjectManifest
- شما می خواهید کنترل بیشتری بر کارمند خدمات خود داشته باشید.
- می خواهید فایل ها را پیش کش کنید.
- شما باید مسیریابی و استراتژی ها را سفارشی کنید.
- میخواهید از سرویسکار خود با سایر ویژگیهای پلتفرم (مانند Web Push ) استفاده کنید.
زمانی که از InjectManifest
استفاده نکنید
- شما می خواهید ساده ترین راه را برای افزودن یک سرویس دهنده به سایت خود داشته باشید.
پلاگین GenerateSW
می توانید افزونه GenerateSW
را به پیکربندی بسته وب خود اضافه کنید:
// 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: ...,
}),
],
};
این یک سرویسکار با راهاندازی پیش کش برای تمام داراییهای بسته وب که توسط پیکربندی شما انتخاب شدهاند و قوانین ذخیرهسازی زمان اجرا ارائه شده ایجاد میکند.
مجموعه کاملی از گزینه های پیکربندی را می توان در مستندات مرجع یافت.
افزونه InjectManifest
میتوانید افزونه InjectManifest
را به پیکربندی بسته وب خود اضافه کنید:
// 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: '...',
}),
],
};
این یک مانیفست پیش کش بر اساس دارایی های بسته وب که توسط پیکربندی شما انتخاب شده است ایجاد می کند و آن را به فایل سرویس کارگر همراه و کامپایل شده شما تزریق می کند.
مجموعه کاملی از گزینه های پیکربندی را می توان در مستندات مرجع یافت.
اطلاعات اضافی
راهنمایی در مورد استفاده از افزونه ها در زمینه ساخت بسته وب بزرگتر را می توان در بخش « برنامه وب پیشرو » از اسناد وب پک یافت.
انواع
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: ...,
});
خواص
- سازنده
باطل
یک نمونه از GenerateSW ایجاد می کند.
تابع
constructor
به صورت زیر است:(config?: GenerateSWConfig) => {...}
- پیکربندی
GenerateSWConfig اختیاری است
- برمی گرداند
- پیکربندی
GenerateSWConfig
خواص
- اضافی ManifestEntries
(رشته | ManifestEntry )[] اختیاری است
فهرستی از ورودیهایی که باید از پیش ذخیره شوند، علاوه بر هر ورودی که به عنوان بخشی از پیکربندی ساخت ایجاد میشود.
- babelPresetEnvTargets
رشته[] اختیاری است
مقدار پیشفرض این است: ["chrome >= 56"]
اهداف برای انتقال به
babel-preset-env
هنگام انتقال بسته سرویس کارگر. - cacheId
رشته اختیاری
یک شناسه اختیاری که باید به نامهای حافظه پنهان اضافه شود. این در درجه اول برای توسعه محلی مفید است که در آن چندین سایت ممکن است از یک منبع
http://localhost:port
ارائه شوند. - تکه ها
رشته[] اختیاری است
یک یا چند نام تکهای که فایلهای خروجی مربوطه باید در مانیفست پیش کش گنجانده شوند.
- cleanupOutdatedCaches
بولی اختیاری
مقدار پیش فرض این است: false
اینکه آیا Workbox باید تلاش کند تا هر پیش کش ایجاد شده توسط نسخه های قدیمی تر و ناسازگار را شناسایی و حذف کند.
- ادعای مشتریان
بولی اختیاری
مقدار پیش فرض این است: false
اینکه آیا کارمند سرویس باید به محض فعال شدن، کنترل هر یک از مشتریان موجود را شروع کند یا خیر.
- فهرست فهرست
رشته اختیاری
اگر یک درخواست پیمایش برای یک URL که به
/
ختم می شود با URL از پیش ذخیره شده مطابقت نداشته باشد، این مقدار به URL اضافه می شود و برای مطابقت پیش کش بررسی می شود. این باید به چیزی تنظیم شود که سرور وب شما برای فهرست فهرست خود از آن استفاده می کند. - غیرفعال کردن DevLogs
بولی اختیاری
مقدار پیش فرض این است: false
- dontCacheBustURLsMatching
RegExp اختیاری است
داراییهایی که با این مطابقت دارند فرض میشوند که بهطور منحصربهفرد از طریق URL خود نسخهبندی شدهاند، و از تخریب حافظه پنهان HTTP که هنگام پر کردن پیش کش انجام میشود مستثنی هستند. اگرچه لازم نیست، توصیه میشود که اگر فرآیند ساخت موجود شما قبلاً یک مقدار
[hash]
را در هر نام فایل وارد میکند، یک RegExp ارائه دهید که آن را تشخیص میدهد، زیرا پهنای باند مصرفی هنگام پیشکش کردن را کاهش میدهد. - حذف کردن
(رشته | RegExp | تابع)[] اختیاری است
یک یا چند مشخص کننده برای حذف دارایی ها از مانیفست پیش کش استفاده می شود. این با پیروی از قوانین مشابه با گزینه استاندارد
exclude
webpack
تفسیر می شود. اگر ارائه نشده باشد، مقدار پیشفرض[/\.map$/, /^manifest.*\.js$]
است. - ExcludeChunks
رشته[] اختیاری است
یک یا چند نام تکه ای که فایل های خروجی مربوطه آنها باید از مانیفست پیش کش حذف شوند.
- ignoreURLParametersMatching
RegExp[] اختیاری است
هر نام پارامتر جستجو که با یکی از RegExp در این آرایه مطابقت داشته باشد، قبل از جستجو برای تطبیق پیش کش حذف خواهد شد. اگر کاربران شما ممکن است URL هایی را درخواست کنند که شامل پارامترهای URL هستند که برای ردیابی منبع ترافیک استفاده می شوند. اگر ارائه نشده باشد، مقدار پیشفرض
[/^utm_/, /^fbclid$/]
است. - importScripts
رشته[] اختیاری است
فهرستی از فایلهای جاوا اسکریپت که باید به
importScripts()
در داخل فایل service worker تولید شده ارسال شوند. این زمانی مفید است که میخواهید به Workbox اجازه دهید فایل سرویسدهنده سطح بالای شما را ایجاد کند، اما میخواهید کدهای اضافی مانند شنونده رویدادهای فشاری را نیز اضافه کنید. - importScriptsViaChunks
رشته[] اختیاری است
یک یا چند نام از تکه های بسته وب. محتوای آن تکه ها از طریق فراخوانی به
importScripts()
در سرویس کارگر تولید شده گنجانده می شود. - شامل شود
(رشته | RegExp | تابع)[] اختیاری است
یک یا چند مشخص کننده برای گنجاندن دارایی ها در مانیفست پیش کش استفاده می شود. این با پیروی از همان قوانینی که گزینه
include
استانداردwebpack
تفسیر می شود. - inlineWorkboxRuntime
بولی اختیاری
مقدار پیش فرض این است: false
آیا کد زمان اجرا برای کتابخانه Workbox باید در سرویسکار سطح بالا گنجانده شود یا به یک فایل جداگانه تقسیم شود که باید در کنار سرویسکار مستقر شود. جدا نگه داشتن زمان اجرا به این معنی است که کاربران مجبور نیستند هر بار که سرویس دهنده سطح بالای شما تغییر می کند، کد Workbox را دوباره دانلود کنند.
- نوشته های مانیفست
ManifestEntry [] اختیاری است
- manifest Transforms می کند
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 رایج App Shell استفاده کنند.
RegExp[] اختیاری است
آرایهای اختیاری از عبارات منظم که رفتار پیکربندیشده
navigateFallback
را محدود میکند. این در صورتی مفید است که فقط زیر مجموعه ای از URL های سایت شما باید به عنوان بخشی از یک برنامه یک صفحه تلقی شوند. اگر هر دوnavigateFallbackDenylist
وnavigateFallbackAllowlist
پیکربندی شده باشند، فهرست انکار مقدم است.توجه : این RegExps ممکن است در طول یک پیمایش در برابر هر URL مقصد ارزیابی شود. از استفاده از RegExps پیچیده خودداری کنید، در غیر این صورت کاربران شما ممکن است در هنگام پیمایش سایت شما با تاخیر مواجه شوند.
RegExp[] اختیاری است
آرایهای اختیاری از عبارات منظم که رفتار پیکربندیشده
navigateFallback
را محدود میکند. این در صورتی مفید است که فقط زیر مجموعه ای از URL های سایت شما باید به عنوان بخشی از یک برنامه یک صفحه تلقی شوند. اگر هر دوnavigateFallbackDenylist
وnavigateFallbackAllowlist
پیکربندی شده باشند، فهرست انکار اولویت دارد.توجه : این RegExps ممکن است در طول یک پیمایش در برابر هر URL مقصد ارزیابی شود. از استفاده از RegExps پیچیده خودداری کنید، در غیر این صورت کاربران شما ممکن است در هنگام پیمایش سایت شما با تاخیر مواجه شوند.
بولی اختیاری
مقدار پیش فرض این است: false
فعال کردن پیشبارگذاری ناوبری در سرویسکار تولید شده یا خیر. هنگامی که روی true تنظیم می شود، باید از
runtimeCaching
نیز برای تنظیم یک استراتژی پاسخ مناسب استفاده کنید که با درخواست های ناوبری مطابقت داشته باشد و از پاسخ از پیش بارگذاری شده استفاده کنید.- آفلاین GoogleAnalytics
بولی | GoogleAnalyticsInitializeOptions اختیاری است
مقدار پیش فرض این است: false
کنترل می کند که آیا پشتیبانی از Google Analytics آفلاین را شامل شود یا خیر. هنگامی که
true
، فراخوانیinitialize()
'sworkbox-google-analytics
به سرویس کار تولید شده شما اضافه می شود. وقتی روی یکObject
تنظیم شود، آن شی به فراخوانیinitialize()
ارسال می شود و به شما امکان می دهد رفتار را سفارشی کنید. - runtimeCaching
RuntimeCaching [] اختیاری است
وقتی از ابزارهای ساخت Workbox برای تولید سرویسکار خود استفاده میکنید، میتوانید یک یا چند پیکربندی کش زمان اجرا را مشخص کنید. سپس با استفاده از پیکربندی تطبیق و کنترلر که شما تعریف کردهاید، اینها به تماسهای
workbox-routing.registerRoute
ترجمه میشوند.برای همه گزینهها، به مستندات
workbox-build.RuntimeCaching
مراجعه کنید. مثال زیر یک پیکربندی معمولی را نشان می دهد که دو مسیر زمان اجرا تعریف شده است: - skipWaiting
بولی اختیاری
مقدار پیش فرض این است: false
آیا برای افزودن یک تماس بدون قید و شرط به
skipWaiting()
به سرویس کارگر تولید شده. اگرfalse
باشد، به جای آن یک شنوندهmessage
اضافه میشود که به صفحات سرویس گیرنده اجازه میدهدskipWaiting()
را با فراخوانیpostMessage({type: 'SKIP_WAITING'})
در یک سرویسدهنده منتظر راهاندازی کنند. - نقشه منبع
بولی اختیاری
مقدار پیش فرض: true است
آیا برای ایجاد یک نقشه منبع برای فایل های سرویس کارگر تولید شده.
- swDest
رشته اختیاری
مقدار پیش فرض این است: "service-worker.js"
نام دارایی فایل Service Worker ایجاد شده توسط این افزونه.
InjectManifest
این کلاس از کامپایل یک فایل Service Worker ارائه شده از طریق swSrc
و تزریق لیستی از URL ها و اطلاعات ویرایش به آن سرویس دهنده برای پیش کش بر اساس خط لوله دارایی وب پک پشتیبانی می کند.
از نمونه ای از InjectManifest
در آرایه plugins
یک پیکربندی بسته وب استفاده کنید.
این افزونه علاوه بر تزریق مانیفست، کامپایل فایل swSrc
را با استفاده از گزینه های پیکربندی بسته وب اصلی انجام می دهد.
// 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: '...',
});
خواص
- سازنده
باطل
یک نمونه از InjectManifest ایجاد می کند.
تابع
constructor
به صورت زیر است:(config: WebpackInjectManifestOptions) => {...}
- پیکربندی
- برمی گرداند
- پیکربندی
خواص
default
تایپ کنید
شی
خواص
- GenerateSW
پرس و جو
- InjectManifest
پرس و جو