AMD এবং Non-AMD এর মধ্যে Compatibility নিশ্চিত করা

Shim Configurations এবং Non-AMD স্ক্রিপ্ট ব্যবস্থাপনা - রিকোয়ারজেএস (RequireJS) - Web Development

223

RequireJS একটি মডিউল লোডার যা AMD (Asynchronous Module Definition) স্ট্যান্ডার্ড অনুসরণ করে, তবে অনেক পুরনো লাইব্রেরি বা স্ক্রিপ্ট Non-AMD ফরম্যাটে লেখা হয়ে থাকে (যেমন CommonJS বা সাধারণ স্ক্রিপ্ট ফাইল)। এ ধরনের লাইব্রেরি এবং স্ক্রিপ্টগুলির সাথে কাজ করতে গেলে AMD এবং Non-AMD এর মধ্যে compatibility নিশ্চিত করতে কিছু পদক্ষেপ নিতে হয়।

AMD এবং Non-AMD এর মধ্যে Compatibility

RequireJS এ, AMD এবং Non-AMD কোডের মধ্যে compatibility বজায় রাখার জন্য shim configuration এবং exports অপশন ব্যবহার করা যেতে পারে। এর মাধ্যমে আপনি Non-AMD স্ক্রিপ্টগুলিকে AMD মডিউল হিসেবে রূপান্তর করতে পারেন এবং তার সাথেই ব্যবহার করতে পারেন।

১. Shim Configuration

Shim configuration ব্যবহার করে আপনি Non-AMD স্ক্রিপ্টগুলি AMD স্টাইলে রূপান্তর করতে পারেন। এর মাধ্যমে আপনি সরাসরি Non-AMD স্ক্রিপ্টের dependencies এবং exports ফাংশনালিটি কনফিগার করতে পারেন।

Shim Configuration Syntax:

require.config({
  shim: {
    'non-amd-library': {
      deps: ['dependency1', 'dependency2'], // dependencies
      exports: 'NonAMDLibrary' // Global object exported by the non-AMD library
    }
  }
});

এটি কীভাবে কাজ করে?

  • deps: Non-AMD লাইব্রেরির জন্য নির্ভরশীল অন্যান্য মডিউলগুলি আগে লোড হবে।
  • exports: Non-AMD লাইব্রেরি একটি গ্লোবাল অবজেক্ট তৈরি করে (যেমন window.NonAMDLibrary) এবং আপনাকে তা AMD মডিউল হিসেবে ব্যবহারের জন্য exports করতে হবে।

এটি কিভাবে ব্যবহার করবেন:

ধরা যাক, আপনি একটি Non-AMD লাইব্রেরি যেমন jQuery ব্যবহার করছেন, যা গ্লোবাল window.$ অথবা window.jQuery এ এক্সপোর্ট করে। এই ক্ষেত্রে আপনি shim configuration ব্যবহার করে jQuery-কে AMD ফরম্যাটে ইনক্লুড এবং ব্যবহারের জন্য কনফিগার করতে পারেন।

require.config({
  paths: {
    'jquery': 'libs/jquery-3.6.0.min' // Path to the jQuery script
  },
  shim: {
    'jquery': {
      exports: '$'  // Exports the global $ object as the jQuery module
    }
  }
});

// Now you can use jQuery as an AMD module
require(['jquery'], function($) {
  console.log($);  // jQuery will work as expected
});

এখানে, shim কনফিগারেশনের মাধ্যমে আপনি jQuery-কে AMD module হিসেবে ব্যবহার করছেন, যদিও এটি Non-AMD (গ্লোবাল স্ক্রিপ্ট) হিসেবে তৈরি হয়েছিল।

২. AMD to Non-AMD Compatibility with requirejs

আপনি যদি একটি AMD স্টাইল মডিউলকে Non-AMD স্ক্রিপ্ট হিসেবে ব্যবহার করতে চান (যেমন একটি পুরনো লাইব্রেরি), তবে আপনাকে requirejs অথবা define এর মাধ্যমে সেই মডিউলকে ইমপোর্ট করতে হবে।

Non-AMD library usage in AMD application:

এখানে আপনি দেখতে পারেন কিভাবে একটি AMD মডিউলকে Non-AMD অ্যাপ্লিকেশন থেকে লোড করা যায়।

// Non-AMD example using RequireJS
define(['require', 'jquery'], function(require, $) {
  console.log('Using AMD module in a Non-AMD context');
});

এটি কিভাবে কাজ করে?

এখানে, আমরা Non-AMD ফরম্যাটে jQuery ইনপোর্ট করছি কিন্তু তা AMD ফরম্যাটে ব্যবহার করছি। require এবং define ফাংশনালিটি ব্যবহার করে আপনি AMD এবং Non-AMD এর মধ্যে ব্রিজ তৈরি করতে পারেন।

৩. Converting Non-AMD Scripts to AMD

অনেক পুরনো স্ক্রিপ্ট যেমন libraries বা plugins যেগুলো Non-AMD ফরম্যাটে লেখা, সেগুলিকে AMD মডিউলে রূপান্তর করতে shim কনফিগারেশন ব্যবহার করতে হয়। এতে আপনি সহজেই Non-AMD লাইব্রেরিকে আপনার অ্যাপ্লিকেশনে যোগ করতে পারবেন এবং ডিপেনডেন্সি ও এক্সপোর্ট সেটআপ করতে পারবেন।

Non-AMD Script Example (External library)

<script src="path/to/non-amd-library.js"></script>

এটি সাধারণভাবে Non-AMD স্ক্রিপ্ট হিসেবে কাজ করবে। তবে RequireJS এর মাধ্যমে আপনি এটি AMD ফরম্যাটে রূপান্তর করতে পারেন।

Converting the Non-AMD script to AMD module:

require.config({
  shim: {
    'non-amd-lib': {
      deps: ['jquery'], // Dependent on jQuery
      exports: 'NonAMDLib'  // Exports the NonAMDLib global object
    }
  }
});

require(['non-amd-lib'], function(NonAMDLib) {
  console.log(NonAMDLib);  // You can now use it as an AMD module
});

এখানে, shim কনফিগারেশনের মাধ্যমে Non-AMD লাইব্রেরি NonAMDLib কে AMD মডিউলে রূপান্তর করা হয়েছে।

৪. Handling Global Variables in Non-AMD Scripts

অনেক পুরনো স্ক্রিপ্ট গ্লোবাল ভ্যারিয়েবল তৈরি করে থাকে, যেগুলো Non-AMD স্ক্রিপ্ট হিসেবে ব্যবহার হয়। এসব স্ক্রিপ্টগুলোর ক্ষেত্রে আপনি global variables কে AMD মডিউল হিসেবে ইনপোর্ট করতে পারবেন shim কনফিগারেশন ব্যবহারের মাধ্যমে।

Example with Global Variables:

require.config({
  shim: {
    'oldLibrary': {
      exports: 'GlobalLibraryObject' // Exports a global object
    }
  }
});

require(['oldLibrary'], function(GlobalLibraryObject) {
  console.log(GlobalLibraryObject);  // You can now use it as an AMD module
});
  1. AMD এবং Non-AMD স্ক্রিপ্টগুলির মধ্যে compatibility নিশ্চিত করতে RequireJS এর shim configuration ব্যবহৃত হয়। এর মাধ্যমে আপনি Non-AMD স্ক্রিপ্টগুলিকে AMD modules হিসেবে ব্যবহৃত করতে পারেন।
  2. Shim configuration সাহায্যে আপনি Non-AMD স্ক্রিপ্টগুলির dependencies এবং exports সঠিকভাবে কনফিগার করে তাদের AMD মডিউল হিসেবে ব্যবহার করতে পারেন।
  3. RequireJS আপনাকে AMD এবং Non-AMD স্ক্রিপ্টের মধ্যে compatibility বজায় রেখে কার্যকরী কোড তৈরি করতে সহায়তা করে।
Content added By
Promotion

Are you sure to start over?

Loading...