কখন আমার প্রয়োজন () প্রয়োজন এবং কখন সংজ্ঞায়িত () ব্যবহার করব?


316

আমি গত কয়েক দিন ধরে প্রয়োজনীয়তা নিয়ে ঘুরছি। আমি সংজ্ঞায়িত এবং প্রয়োজনীয়তার মধ্যে পার্থক্যগুলি বোঝার চেষ্টা করছি।

সংজ্ঞায়িত করা মডিউল পৃথক করার অনুমতি দেয় এবং নির্ভরতা আদেশ মেনে চলার অনুমতি দেয়। তবে এটি শুরু করার জন্য প্রয়োজনীয় সমস্ত ফাইল ডাউনলোড করে। যখন আপনার প্রয়োজন হয় কেবল তখনই আপনার প্রয়োজন হয়।

এই দু'জনকে কী একসাথে ব্যবহার করা যেতে পারে এবং এগুলির প্রতিটি কী উদ্দেশ্যে ব্যবহার করা উচিত?

উত্তর:


331

defineআপনি প্রয়োজনীয়.js তে একটি মডিউল নিবন্ধভুক্ত করার সাথে সাথে আপনি অন্যান্য মডিউল সংজ্ঞায় নির্ভর করতে পারেন বা বিবৃতি প্রয়োজন। আপনার সাথে require"স্রেফ" মডিউল বা জাভাস্ক্রিপ্ট ফাইল লোড / ব্যবহার করুন যা প্রয়োজনীয়.js দ্বারা লোড করা যায়। উদাহরণস্বরূপ ডকুমেন্টেশন একবার দেখুন

আমার থাম্ব বিধি:

  • সংজ্ঞা দিন: আপনি যদি কোনও মডিউল ঘোষণা করতে চান তবে আপনার অ্যাপ্লিকেশনটির অন্যান্য অংশগুলি নির্ভর করবে।

  • প্রয়োজনীয়: আপনি যদি স্টাফ লোড করতে এবং ব্যবহার করতে চান তবে।


331

প্রয়োজনীয়.js উত্স কোড থেকে (লাইন 1902):

/**
 * The function that handles definitions of modules. Differs from
 * require() in that a string for the module should be the first argument,
 * and the function to execute after dependencies are loaded should
 * return a value to define the module corresponding to the first argument's
 * name.
 */

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

কারখানার পদ্ধতির প্রত্যাবর্তন অবশ্যই আপনার মডিউলটির জন্য বাস্তবায়ন ফিরিয়ে আনবে ( মডিউল প্যাটার্ন একইভাবে )।

require()ফাংশন একটি নতুন মডিউল বাস্তবায়ন ফিরে যাওয়ার নেই।

define()আপনি ব্যবহার করে এমন কিছু জিজ্ঞাসা করছেন যা "আমি প্যারামিটার হিসাবে যাচ্ছি এমন ফাংশনটি চালান এবং আমি যে আইডি দিয়ে যাচ্ছি তা যা কিছু ফেরত দিন তা নির্ধারণ করুন তবে আগে, এই নির্ভরতা লোড হয়েছে কিনা তা পরীক্ষা করে দেখুন"

require()আপনি ব্যবহার করে এমন কিছু বলছেন যা "আমি যে ফাংশনটি পাস করি তার মধ্যে নিম্নলিখিত নির্ভরতা রয়েছে, এই নির্ভরতাগুলি চালনার আগে লোড হয়েছে কিনা তা পরীক্ষা করুন"

require()ফাংশন যেখানে আপনি অনুক্রমে আপনার সংজ্ঞায়িত মডিউল ব্যবহার, নিশ্চিত করুন যে মডিউল সংজ্ঞায়িত করা হয় হতে হয়, কিন্তু আপনি নতুন মডিউল সংজ্ঞায়িত করা হয় না।


2
প্রয়োজনীয়তা একটি সংজ্ঞায়িত মডিউলে ব্যবহৃত হয় কিনা বা এর বাইরেও কি কোনও পার্থক্য রয়েছে? যদি এটি কোনও মডিউলটির অভ্যন্তরে ব্যবহৃত হয় তবে ব্যবহারের প্রয়োজনের চেয়ে মডিউল সংজ্ঞায় কেবল প্রয়োজনীয়তা সেট করে না কেন?
পেট্রি

আমি এখানে যা পড়ি তার থেকে কেন এই উত্তরটি এত আলাদা ? Jj.org/docs/api.html#deffunc ??
জেমস লিন

2
@ পেট্রি, এমন শোনা যাচ্ছে যে আপনি প্রয়োজনীয় জেএস-এর সংস্করণ 2 মডিউলগুলি সংকীর্ণভাবে লোড করার আচরণ দেখতে পাচ্ছেন। "প্রয়োজনীয় জেএস ২.০ 2.0 মডিউলটির কারখানার ফাংশন (ফাংশনটি কেটে গেছে) চালাবে না define(), যতক্ষণ না কোনও require([])কল আসে যার জন্য তার কাছে জিজ্ঞাসা করা হয়, বা তার উপর নির্ভর করে এমন কোনও কিছু আসে না।" github.com/jrburke/requirejs/wiki/…
alxndr

2

মডিউল সংজ্ঞা সহজতর করার জন্য "সংজ্ঞায়িত" পদ্ধতি এবং নির্ভরতা লোডিং পরিচালনা করার জন্য "প্রয়োজনীয়" পদ্ধতি

সংজ্ঞায়িত নিম্নলিখিত স্বাক্ষর ব্যবহার করে প্রস্তাবের ভিত্তিতে নামযুক্ত বা নামবিহীন মডিউলগুলি সংজ্ঞায়িত করতে ব্যবহৃত হয়:

define(
module_id /*optional*/, 
[dependencies] /*optional*/, 
definition function /*function for instantiating the module or object*/
);

অন্যদিকে প্রয়োজনীয়তা সাধারণত কোনও শীর্ষ স্তরের জাভাস্ক্রিপ্ট ফাইলটিতে কোড লোড করতে ব্যবহৃত হয় বা মডিউলের মধ্যে আপনি গতিশীলভাবে নির্ভরতা আনতে চান

পড়ুন https://addyosmani.com/writing-modular-js/ আরও তথ্যের জন্য।


2

সপ্তাহের দিন:

  1. আপনি পুনঃব্যবহার করা হবে এমন একটি মডিউল নির্ধারণ করতে চাইলে আপনি সংজ্ঞা ব্যবহার করেন use

  2. আপনার কেবল নির্ভরতা লোড করার জন্য প্রয়োজন

    //sample1.js file : module definition 
    define(function() {
          var sample1 = {};
          //do your stuff
         return sample1;
     });
    
    //sample2.js file : module definition and also has a dependency on jQuery and sample1.js
    define(['jquery', 'sample1'], function($,sample1) {
        var sample2 = {
            getSample1:sample1.getSomeData();
        };
        var selectSomeElement = $('#someElementId');
        //do your stuff....
        return sample2;
    });
    
    //calling in any file (mainly in entry file)
    require(['sample2'], function(sample2) {
        // sample1 will be loaded also
    });
    

আশা করি এটি আপনাকে সহায়তা করবে।


1

নির্ভরতা লোড করতে ব্যবহৃত () এবং সংজ্ঞা () উভয়ই প্রয়োজন these এই দুটি পদ্ধতির মধ্যে একটি প্রধান পার্থক্য রয়েছে।

এর খুব সহজ লোক

প্রয়োজনীয় (): তাত্ক্ষণিক কার্যকারিতা চালানোর জন্য পদ্ধতিটি ব্যবহৃত হয়। সংজ্ঞায়িত (): একাধিক লোকেশন (পুনঃব্যবহার) ব্যবহারের জন্য মডিউলগুলি সংজ্ঞায়িত করার জন্য পদ্ধতিটি ব্যবহৃত হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.