ওয়ার্কবক্সের উপায়

ওয়ার্কবক্স যেকোন প্রকল্পের নির্মাণ প্রক্রিয়ার জন্য যথেষ্ট নমনীয়। এর মানে ওয়ার্কবক্স ব্যবহার করার একাধিক উপায় রয়েছে, যা আপনাকে আপনার প্রকল্পের জন্য সঠিক ইন্টিগ্রেশন বেছে নিতে দেয়। আপনি ওয়ার্কবক্সের সাথে যেভাবে সংহত করুন না কেন, বিভিন্ন সরঞ্জাম একই রকম API অফার করে।

generateSW বনাম injectManifest

আপনি ওয়ার্কবক্সের বিল্ড টুলগুলির দুটি মূল পদ্ধতির একটির উপর নির্ভর করবেন: generateSW বা injectManifest । আপনার কোনটি ব্যবহার করা উচিত তা নির্ভর করে আপনার কতটা নমনীয়তার প্রয়োজন। generateSW নমনীয়তার খরচে ব্যবহারের সহজতা এবং সরলতাকে অগ্রাধিকার দেয়, আপনাকে কনফিগারেশন বিকল্পগুলির একটি সেট ঘোষণা করার অনুমতি দেয় এবং বিনিময়ে আপনাকে সম্পূর্ণ কার্যকরী পরিষেবা কর্মী দেয়।

injectManifest কিছু সরলতার মূল্যে আরও বেশি নমনীয়তার পক্ষে, যেহেতু আপনি নিজের পরিষেবা কর্মীর জন্য কোডটি নিজেই লিখবেন, injectManifest একটি precache ম্যানিফেস্ট প্রদান করে যা Workbox এর precaching পদ্ধতি দ্বারা ব্যবহার করা যেতে পারে।

কখন generateSW ব্যবহার করবেন

আপনার generateSW ব্যবহার করা উচিত যদি:

  • আপনি আপনার বিল্ড প্রক্রিয়ার সাথে যুক্ত ফাইলগুলিকে প্রাক-ক্যাশে করতে চান, সেই ফাইলগুলি সহ যার URL-এ হ্যাশ রয়েছে যা আপনি সময়ের আগে জানেন না।
  • আপনার সহজ রানটাইম ক্যাশিং প্রয়োজন যা generateSW এর বিকল্পগুলির মাধ্যমে কনফিগার করা যেতে পারে।

কখন generateSW ব্যবহার করবেন না

অন্যদিকে, আপনার generateSW ব্যবহার করা উচিত নয় যদি:

  • আপনি অন্যান্য পরিষেবা কর্মী বৈশিষ্ট্যগুলি ব্যবহার করতে চান (যেমন ওয়েব পুশ )।
  • অতিরিক্ত স্ক্রিপ্ট আমদানি করতে আপনার অতিরিক্ত নমনীয়তা প্রয়োজন বা নির্দিষ্ট ওয়ার্কবক্স মডিউল ব্যবহার করে আপনার পরিষেবা কর্মীকে আপনার অ্যাপ্লিকেশনের প্রয়োজনের সাথে সূক্ষ্ম-টিউন করতে হবে।

কখন injectManifest ব্যবহার করবেন

আপনার injectManifest ব্যবহার করা উচিত যদি:

  • আপনি ফাইল precache করতে চান, কিন্তু আপনার নিজের পরিষেবা কর্মী লিখতে চান।
  • আপনার জটিল ক্যাশিং বা রাউটিং চাহিদা রয়েছে যা generateSW এর কনফিগারেশন বিকল্পগুলির মাধ্যমে প্রকাশ করা যায় না
  • আপনি আপনার পরিষেবা কর্মীর অন্যান্য API ব্যবহার করতে চান (যেমন ওয়েব পুশ)।

injectManifest generateSW থেকে আলাদা যে এটিতে আপনাকে একটি উৎস পরিষেবা কর্মী ফাইল নির্দিষ্ট করতে হবে। এই ওয়ার্কফ্লোতে, সোর্স সার্ভিস ওয়ার্কার ফাইলের একটি বিশেষ self.__WB_MANIFEST স্ট্রিং যাতে injectManifest এটিকে precache ম্যানিফেস্ট দিয়ে প্রতিস্থাপন করতে পারে।

কখন injectManifest ব্যবহার করবেন না

আপনার injectManifest ব্যবহার করা উচিত নয় যদি:

  • আপনি আপনার পরিষেবা কর্মীর মধ্যে precaching ব্যবহার করতে চান না৷
  • আমাদের পরিষেবা কর্মীদের প্রয়োজনীয়তাগুলি যথেষ্ট সহজ যা generateSW এবং এর কনফিগারেশন বিকল্পগুলি যা প্রদান করতে পারে তা দ্বারা আচ্ছাদিত করা যায়।
  • আপনি নমনীয়তার চেয়ে ব্যবহারের সহজতাকে অগ্রাধিকার দেন।

ওয়ার্কবক্সের বিল্ড টুল ব্যবহার করুন

আপনি যদি আপনার বিল্ড প্রক্রিয়ায় ওয়ার্কবক্স ব্যবহার করার জন্য একটি ফ্রেমওয়ার্ক-অজ্ঞেয়বাদী উপায় খুঁজছেন, আপনার কাছে তিনটি বিকল্প রয়েছে:

  1. workbox-cli
  2. workbox-build । কমান্ড লাইন টুল।
  3. একটি বান্ডলার ব্যবহার করা (যেমন workbox-webpack-plugin )।

এই বিল্ড টুলগুলির প্রত্যেকটি একই ধরণের বিকল্পগুলির সাথে generateSW এবং injectManifest মোড উভয়ই অফার করে। আপনি যখন আপনার ওয়ার্কবক্স-চালিত পরিষেবা কর্মীকে একটি নির্দিষ্ট কাঠামোর সাথে বেঁধে রাখতে চান না তখন এগুলি সব সূক্ষ্ম পছন্দ। এই বিকল্পগুলির মধ্যে কোনটি সবচেয়ে উপযুক্ত তা জানার জন্য, আসুন প্রতিটিতে একটি দ্রুত নজর দেওয়া যাক।

workbox-cli

আপনি যদি ওয়ার্কবক্সের সাথে প্রবেশের সর্বনিম্ন সম্ভাব্য বাধা খুঁজছেন, CLI আপনার জন্য:

npm install workbox-cli --save-dev

CLI ব্যবহার শুরু করতে, npx workbox wizard দিয়ে উইজার্ডটি চালান। উইজার্ড কয়েকটি প্রশ্ন জিজ্ঞাসা করবে, এবং সেই প্রশ্নের উত্তরগুলি একটি workbox-config.js ফাইলের সাথে একটি প্রকল্প সেট আপ করতে ব্যবহার করা হবে যা আপনি আপনার প্রয়োজন অনুসারে কাস্টমাইজ করতে পারেন। এটি এমন কিছু দেখাবে:

// A config for `generateSW`
export default {
  globDirectory: 'dist/',
  globPatterns: [
    '**/*.{css,woff2,png,svg,jpg,js}'
  ],
  swDest: 'dist/sw.js'
};

একবার আপনার কনফিগারেশন ফাইল তৈরি হয়ে গেলে, CLI আপনার জন্য generateSW বা injectManifest পদ্ধতি চালাতে পারে। CLI-এর সাহায্য পাঠ্যে আরও তথ্য এবং ব্যবহারের উদাহরণ রয়েছে।

workbox-build

workbox-cli হল workbox-build মডিউলের চারপাশে একটি মোড়ক, এবং একটি বিকল্প হল workbox-build সরাসরি ব্যবহার করা। workbox-build ব্যবহার করার সময়, একটি workbox-config.js ফাইল ব্যবহার করে বিকল্পগুলি নির্দিষ্ট করার পরিবর্তে, আপনি একটি নোড স্ক্রিপ্টের অংশ হিসাবে সরাসরি generateSW বা injectManifest পদ্ধতিগুলি ব্যবহার করবেন, একই রকম বিকল্পগুলির মধ্যে পাস করবেন:

// build-sw.mjs
import {generateSW} from 'workbox-build';

generateSW({
  globDirectory: 'dist/',
  globPatterns: [
    '**/*.{css,woff2,png,svg,jpg,js}'
  ],
  swDest: 'dist/sw.js'
});

উপরের উদাহরণে, node build-sw.mjs কমান্ড চালানো হলে workbox-build জেনারেট করা সার্ভিস ওয়ার্কারকে dist ডিরেক্টরিতে লিখবে।

একটি বান্ডলার ব্যবহার করে

বিভিন্ন বান্ডলারের নিজস্ব ওয়ার্কবক্স প্লাগইন রয়েছে, তবে ওয়ার্কবক্স টিম দ্বারা আনুষ্ঠানিকভাবে সমর্থিত একমাত্র বান্ডলার হল ওয়েবপ্যাক, workbox-webpack-plugin এর মাধ্যমে। workbox-cli এবং workbox-build এর মত, workbox-webpack-plugin generateSW বা injectManifest পদ্ধতিগুলি চালাবে, প্লাগইনটি সেই পদ্ধতির নামগুলিকে GenerateSW বা InjectManifest হিসাবে বড় করে ব্যতীত। অন্যথায়, ব্যবহারটি workbox-build অনুরূপ:

// webpack.config.js
import {GenerateSW} from 'workbox-webpack-plugin';

export default {
  // Other webpack config options omitted for brevity...
  plugins: [
    new GenerateSW({
      swDest: './dist/sw.js'
    })
  ]
};

আপনি GenerateSW বা InjectManifest এ যে বিকল্পগুলি পাস করেন তা generateSW বা injectManifest এর মতো নয়, তবে উল্লেখযোগ্য ওভারল্যাপ রয়েছে৷ বিশেষ করে, আপনার উৎপাদন সম্পদগুলি কোথায় বান্ডিল করা হয়েছে তা ওয়েবপ্যাক ইতিমধ্যেই জানে বলে GenerateSW জন্য একটি globDirectory বিকল্প নির্দিষ্ট করার প্রয়োজন নেই-ও করতে পারেন না।

একটি কাঠামো ব্যবহার করুন

এই বিন্দুটি আচ্ছাদিত সবকিছুই একজনের ফ্রেমওয়ার্ক পছন্দ নির্বিশেষে ওয়ার্কবক্স ব্যবহার করার উপর ফোকাস করে। যাইহোক, একটি নির্দিষ্ট কাঠামোর মধ্যে ওয়ার্কবক্স ব্যবহার করা সম্ভব যদি এটি বিকাশকে সহজ করে তোলে। উদাহরণস্বরূপ, ডিফল্টরূপে ওয়ার্কবক্সের সাথে create-react-app শিপ। ওয়ার্কবক্সের সাথে বিভিন্ন ফ্রেমওয়ার্ক ইন্টিগ্রেশন পরে একটি পরবর্তী নিবন্ধে কভার করা হয়েছে

এটা লক্ষণীয় যে ওয়ার্কবক্সের এই ফ্রেমওয়ার্ক-নির্দিষ্ট ইন্টিগ্রেশনগুলি আপনার ইচ্ছামত ওয়ার্কবক্স কনফিগার করার ক্ষমতাকে সীমাবদ্ধ করতে পারে। এই জাতীয় ক্ষেত্রে, আপনি সর্বদা এখানে আলোচনা করা পদ্ধতিগুলিতে ফিরে যেতে পারেন।

যদি আমার একটি বিল্ড প্রক্রিয়া না থাকে?

এই নথিটি অনুমান করে যে আপনার প্রকল্পের একটি বিল্ড প্রক্রিয়া আছে, কিন্তু আপনার প্রকল্প, বাস্তবে, নাও হতে পারে। যদি এটি আপনার পরিস্থিতি বর্ণনা করে, workbox-sw মডিউল দিয়ে ওয়ার্কবক্স ব্যবহার করা এখনও সম্ভব। workbox-sw এর সাথে, আপনি একটি CDN থেকে বা স্থানীয়ভাবে ওয়ার্কবক্স রানটাইম লোড করতে পারেন এবং আপনার নিজস্ব পরিষেবা কর্মী রচনা করতে পারেন।

উপসংহার

ওয়ার্কবক্সের নমনীয়তা নিশ্চিত করে যে আপনি এটির ফ্রেমওয়ার্ক বা টুলচেন পছন্দ নির্বিশেষে যে কোনও প্রকল্পে এটি ব্যবহার করতে পারেন। এই সমস্ত উপায়গুলি আপনাকে কয়েকটি পদ্ধতি ব্যবহার করে প্রিক্যাচিং এবং রানটাইম ক্যাশিং সম্পন্ন করার অনুমতি দেবে, যখন প্রয়োজনের সময় আরও উন্নত বৈশিষ্ট্য সহ পরিষেবা কর্মীদের তৈরি করতে আরও নমনীয়তার অনুমতি দেবে।