আপনি যে কোড দুটি ব্লক দেখিয়েছেন তা কখন এবং কেন চালায় সে ক্ষেত্রে নাটকীয়ভাবে আলাদা। তারা একে অপরের একচেটিয়া নয়। তারা একই উদ্দেশ্যে কাজ করে না।
জাভাস্ক্রিপ্ট মডিউল
(function($) {
})(jQuery);
এটি একটি "জাভাস্ক্রিপ্ট মডিউল" প্যাটার্ন, সঙ্গে সঙ্গে আমন্ত্রণমূলক ফাংশন প্রয়োগ করা হয়েছে।
এই কোডের উদ্দেশ্যটি হল আপনার কোডের জন্য "মডুলারালিটি", গোপনীয়তা এবং এনক্যাপসুলেশন সরবরাহ করা।
এর বাস্তবায়ন হ'ল এমন একটি ফাংশন যা তাত্ক্ষণিকভাবে কলিং (jQuery)
বন্ধনীর দ্বারা আহ্বান করা হয় । প্রথম বন্ধনীতে jQuery পাস করার উদ্দেশ্য বিশ্বব্যাপী ভেরিয়েবলের স্থানীয় স্কোপিং সরবরাহ করা। এটি $
ভেরিয়েবল সন্ধান করার ওভারহেডের পরিমাণ হ্রাস করতে সহায়তা করে এবং কিছু ক্ষেত্রে মিনিফায়ারগুলির জন্য আরও ভাল সংক্ষেপণ / অনুকূলকরণের অনুমতি দেয়।
তাত্ক্ষণিকভাবে চাওয়া ফাংশনগুলি কার্যকর করা হয়, ভাল, অবিলম্বে। ফাংশন সংজ্ঞা সম্পূর্ণ হওয়ার সাথে সাথে ফাংশনটি কার্যকর করা হয়।
jQuery এর "DOMReady" ফাংশন
এই jQuery এর "DOMReady" ফাংশন উপনাম হল: http://api.jquery.com/ready/
$(function(){
});
jQuery এর "DOMReady" ফাংশন কার্যকর হয় যখন DOM আপনার জাভাস্ক্রিপ্ট কোড দ্বারা চালিত হতে প্রস্তুত হয়।
ব্যাকবোন কোডে ডিওএমআরডি বনাম মডিউলগুলি
JQuery এর DOMReady ফাংশনের অভ্যন্তরে আপনার ব্যাকবোন কোডটি সংজ্ঞায়িত করা এবং এটি আপনার অ্যাপ্লিকেশন কার্যকারিতার জন্য সম্ভাব্য ক্ষতিকারক হিসাবে খারাপ ফর্ম। DOM লোড না হয়ে এবং ম্যানিপুলেট করার জন্য প্রস্তুত না হওয়া পর্যন্ত এই ফাংশনটি কল করা হবে না। এর অর্থ আপনি নিজের অবজেক্টগুলি সংজ্ঞায়িত করার আগে ব্রাউজারটি কমপক্ষে একবার ডমকে বিশ্লেষণ না করা পর্যন্ত আপনি অপেক্ষা করছেন।
DOMReady ফাংশনের বাইরে আপনার ব্যাকবোন বস্তুগুলি সংজ্ঞায়িত করা আরও ভাল ধারণা। আমি, অন্য অনেকের মধ্যে একটি জাভাস্ক্রিপ্ট মডিউল প্যাটার্নের ভিতরে এটি করতে পছন্দ করি যাতে আমি আমার কোডের জন্য এনক্যাপসুলেশন এবং গোপনীয়তা সরবরাহ করতে পারি। আমার মডিউলটির বাইরে আমার যে বিটগুলি প্রয়োজন তার অ্যাক্সেস সরবরাহ করতে আমি "প্রকাশিত মডিউল" প্যাটার্নটি (উপরে প্রথম লিঙ্কটি দেখুন) ব্যবহার করার প্রবণতা রাখি।
DOMReady ফাংশনের বাইরে আপনার অবজেক্টগুলি সংজ্ঞায়িত করে এবং সেগুলি উল্লেখ করার জন্য কিছু উপায় সরবরাহ করে আপনি ব্রাউজারটিকে আপনার জাভাস্ক্রিপ্ট প্রক্রিয়াজাতকরণের সম্ভাবনাটি ব্যবহারকারীর অভিজ্ঞতার গতি বাড়ানোর অনুমতি দিচ্ছেন। এটি কোডটিকে আরও নমনীয় করে তোলে কারণ আপনি জিনিসগুলি সরানোর সময় আরও বেশি ডমরিডি ফাংশন তৈরি করার চিন্তা না করেই জিনিসগুলি চারপাশে সরিয়ে নিতে পারেন।
আপনি সম্ভবত কোনও ব্যাকবোন বস্তু অন্য কোথাও সংজ্ঞায়িত করলেও আপনি সম্ভবত একটি ডমরাডি ফাংশন ব্যবহার করতে যাচ্ছেন still কারণটি হ'ল অনেকগুলি ব্যাকবোন অ্যাপ্লিকেশনকে কোনওভাবে ডিওএম চালিত করতে হবে। এটি করার জন্য, আপনাকে ডিওএম প্রস্তুত না হওয়া পর্যন্ত অপেক্ষা করতে হবে, সুতরাং আপনার অ্যাপ্লিকেশনটি সংজ্ঞায়িত হওয়ার পরে আপনাকে DOMReady ফাংশনটি ব্যবহার করতে হবে।
আপনি ওয়েবে চারপাশে এর প্রচুর উদাহরণগুলি খুঁজে পেতে পারেন তবে একটি মডিউল এবং ডোমরডি ফাংশন উভয়ই এখানে ব্যবহার করে একটি খুব বেসিক বাস্তবায়ন:
MyApp = (function(Backbone, $){
var View = Backbone.View.extend({
});
return {
init: function(){
var view = new View();
$("#some-div").html(view.render().el);
}
};
})(Backbone, jQuery);
$(function(){
MyApp.init();
});