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
اینکه آیا کارمند سرویس باید به محض فعال شدن، کنترل هر یک از مشتریان موجود را شروع کند یا خیر.