Prototype JavaScript Framework
প্রোটোটাইপ জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক হল একটি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক যা স্যাম স্টিফেনসন 2005 সালের ফেব্রুয়ারিতে রুবি অন রেলস-এ অ্যাজাক্স সমর্থনের অংশ হিসাবে তৈরি করেছিলেন। এটি জাভাস্ক্রিপ্ট কোডের একক ফাইল হিসাবে প্রয়োগ করা হয়, সাধারণত prototype.js নামে। প্রোটোটাইপ স্বতন্ত্রভাবে বিতরণ করা হয়, তবে রুবি অন রেলস, script.aculo.us এবং রিকোর মতো বৃহত্তর প্রকল্পের অংশ হিসাবেও। , ডাব্লু থ্রিটেকস অনুসারে, প্রোটোটাইপ সমস্ত ওয়েবসাইটের 0.6% দ্বারা ব্যবহৃত হয়। বৈশিষ্ট্য প্রোটোটাইপ জাভাস্ক্রিপ্ট অ্যাপ্লিকেশন বিকাশের জন্য বিভিন্ন ফাংশন প্রদান করে। বৈশিষ্ট্যগুলি এক্স. এম. এল. এইচ. টি. টি. পি. রিকুয়েস্ট নিয়ে কাজ করার জন্য প্রোগ্রামিং শর্টকাট থেকে শুরু করে প্রধান ফাংশন পর্যন্ত বিস্তৃত। প্রোটোটাইপ ক্লাস এবং শ্রেণী-ভিত্তিক বস্তুগুলিকে সমর্থন করার জন্য লাইব্রেরি ফাংশনও সরবরাহ করে। জাভাস্ক্রিপ্টে, অবজেক্ট ক্রিয়েশন প্রোটোটাইপ-ভিত্তিকঃ একটি অবজেক্ট ক্রিয়েটিং ফাংশনের একটি প্রোটোটাইপ বৈশিষ্ট্য থাকতে পারে এবং সেই বৈশিষ্ট্যের জন্য নির্ধারিত যে কোনও বস্তু সেই ফাংশনের সাথে তৈরি বস্তুর প্রোটোটাইপ হিসাবে ব্যবহৃত হবে। প্রোটোটাইপ কাঠামোকে এই ভাষার বৈশিষ্ট্যের সাথে বিভ্রান্ত করা উচিত নয়। নমুনা ইউটিলিটি ফাংশন $() ফাংশন ডলার ফাংশন, $(), গেটইলিমেন্টবাইআইডি ফাংশনের শর্টহ্যান্ড হিসাবে ব্যবহার করা যেতে পারে। একটি এইচ. টি. এম. এল পৃষ্ঠার ডকুমেন্ট অবজেক্ট মডেল (ডি. ও. এম)-এর একটি উপাদানকে উল্লেখ করার জন্য, একটি উপাদানকে চিহ্নিত করার স্বাভাবিক ফাংশনটি হলঃ document.getElementById ("আইডি _ অফ _ এলিমেন্ট"). স্টাইল. কালার = "#ffffff"; $() ফাংশন কোডটিকে কমিয়ে দেয়ঃ $("আইডি _ অফ _ এলিমেন্ট"). সেটস্টাইল ({রঙঃ '#ffffff'}); $() ফাংশন প্যারামিটার হিসাবে একটি উপাদান গ্রহণ করতে পারে এবং ফিরে আসবে, আগের উদাহরণের মতো, একটি প্রোটোটাইপ বর্ধিত বস্তু। ভার ডোমইলিমেন্ট = document.getElementById ("আইডি _ অফ _ এলিমেন্ট");// ইউজুয়াল অবজেক্ট রেফারেন্স রিটার্ন ভার প্রোটোটাইপ এনহ্যান্সডডমইলিমেন্ট = $(ডোমইলিমেন্ট);// প্রোটোটাইপ এক্সটেনডেড অবজেক্ট রেফারেন্স নোটঃ আন্ডারস্কোর (_)-এর মতো, $অক্ষরটি জাভাস্ক্রিপ্ট শনাক্তকারীগুলিতে একটি আইনি "শব্দ অক্ষর", এবং ভাষায় এর অন্য কোনও তাৎপর্য নেই। এটি নিয়মিত অভিব্যক্তিগুলির জন্য সমর্থন হিসাবে একই সময়ে ভাষায় যুক্ত করা হয়েছিল, যাতে পার্লের মতো মিলযুক্ত ভেরিয়েবলগুলি অনুকরণ করা যায়, যেমন $'এবং $'। $F () ফাংশনটি $() ফাংশনের উপর ভিত্তি করেঃ $F () ফাংশনটি অনুরোধকৃত ফর্ম উপাদানটির মান প্রদান করে। একটি 'টেক্সট' ইনপুটের জন্য, ফাংশনটি উপাদানটিতে থাকা ডেটা ফেরত দেবে। একটি 'সিলেক্ট' ইনপুট উপাদানের জন্য, ফাংশনটি বর্তমানে নির্বাচিত মান প্রদান করবে। $F ("আইডি _ অফ _ ইনপুট _ এলিমেন্ট") $$() ফাংশন ডলার ডলার ফাংশন হল প্রোটোটাইপের সিএসএস সিলেক্টর ইঞ্জিন। এটি একটি সিএসএস স্টাইলশীটে নির্বাচকের মতো একই নিয়ম অনুসরণ করে সমস্ত মিলযুক্ত উপাদানগুলি ফেরত দেয়। উদাহরণস্বরূপ, আপনি যদি "পালসেট" শ্রেণী সহ সমস্ত <a> উপাদান পেতে চান, তাহলে আপনি নিম্নলিখিতটি ব্যবহার করবেনঃ $$("a.pulsate") এটি উপাদানগুলির একটি সংগ্রহ প্রদান করে। আপনি যদি মূল প্রোটোটাইপ লাইব্রেরির script.aculo.us এক্সটেনশন ব্যবহার করেন, তাহলে আপনি নিম্নরূপ "পালসেট" (পলক ঝপকানো) প্রভাব প্রয়োগ করতে পারেনঃ $$("a.pulsate"). প্রতিটি (Effect.Pulsate); অ্যাজাক্স অবজেক্ট একটি ক্রস-ব্রাউজার XMLHttpRequest ফাংশন চালানোর জন্য প্রয়োজনীয় কোডের পরিমাণ হ্রাস করার প্রয়াসে, প্রোটোটাইপ বিভিন্ন ব্রাউজারকে বিমূর্ত করার জন্য অ্যাজাক্স অবজেক্ট সরবরাহ করে। এর দুটি প্রধান পদ্ধতি রয়েছেঃ Ajax.Request () এবং Ajax.Updater ()। আয়াক্স অবজেক্টের দুটি রূপ রয়েছে। Ajax.Request একটি এ. জে. এ. এক্স কল থেকে কাঁচা এক্স. এম. এল আউটপুট প্রদান করে, যেখানে Ajax.Updater একটি নির্দিষ্ট ডি. ও. এম অবজেক্টের ভিতরে রিটার্ন প্রবেশ করাবে। নীচের Ajax.Request দুটি এইচটিএমএল ফর্ম ইনপুট উপাদানের বর্তমান মান খুঁজে পায়, সেই উপাদানের নাম/মান জোড়া সহ সার্ভারকে একটি এইচটিটিপি পোস্ট অনুরোধ জারি করে এবং সার্ভার থেকে এইচটিটিপি প্রতিক্রিয়া প্রাপ্ত হলে একটি কাস্টম ফাংশন চালায় (যাকে নীচে শো রেসপন্স বলা হয়): নতুন Ajax.Request ("HTTP:// স্থানীয় হোস্ট/সার্ভার স্ক্রিপ্ট", {পরামিতিঃ {মান 1: $F ("ফর্ম _ এলিমেন্ট _ আইডি _ 1"), মান 2: $F ("ফর্ম _ এলিমেন্ট _ আইডি _ 2"), সাফল্যঃ শো রেসপন্স, অনফায়লঃ শো এরর); অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং প্রোটোটাইপ আরও ঐতিহ্যবাহী বস্তুর জন্য সমর্থন যোগ করে - একটি নতুন শ্রেণী তৈরি করতে Class.create () পদ্ধতি ব্যবহার করা হয়। তারপরে একটি শ্রেণীকে একটি প্রোটোটাইপ বরাদ্দ করা হয় যা শ্রেণীটির দৃষ্টান্তের জন্য একটি নীলনকশা হিসাবে কাজ করে। ভার ফার্স্টক্লাস = Class.create ({// ইনিশিয়ালাইজ পদ্ধতিটি একটি কনস্ট্রাক্টর হিসাবে কাজ করেঃ ফাংশন () {this.data = "হ্যালো ওয়ার্ল্ড";}); অন্য ক্লাস প্রসারিত করাঃ Ajax.Request = Class.create (Ajax.Base, {// ইনিশিয়ালাইজ পদ্ধতিটিকে ওভাররাইড করুনঃ ফাংশন (ইউআরএল, বিকল্পগুলি) {this.transport = Ajax.getTransport (); this.setOptions (বিকল্পগুলি); this.request (ইউআরএল);},//. আরও পদ্ধতি যোগ করুন। ফাংশন থেকে ফলস্বরূপ সম্মিলিত বস্তুটিও ফিরে আসে। উপরের উদাহরণের মতো, প্রথম প্যারামিটারটি সাধারণত বেস অবজেক্ট তৈরি করে, এবং দ্বিতীয়টি একটি বেনামী অবজেক্ট যা শুধুমাত্র অতিরিক্ত বৈশিষ্ট্য সংজ্ঞায়িত করার জন্য ব্যবহৃত হয়। পুরো সাব-ক্লাস ঘোষণাটি ফাংশন কলের বন্ধনীর মধ্যে ঘটে। সমস্যাগুলি জেকুয়েরির মতো অন্যান্য জাভাস্ক্রিপ্ট লাইব্রেরির মতো নয়, প্রোটোটাইপ ডিওএমকে প্রসারিত করে। গ্রন্থাগারের পরবর্তী প্রধান সংস্করণে এটি পরিবর্তন করার পরিকল্পনা রয়েছে। এপ্রিল 2010-এ, ব্লগার জুরি 'কাঙ্গাক্স' জায়ৎসেভ (প্রোটোটাইপ কোরের) W3C ডিওএম দ্বারা সংজ্ঞায়িত বস্তুর মধ্যে বানরের নতুন পদ্ধতি এবং বৈশিষ্ট্যগুলি প্যাচ করার ফলে যে সমস্যাগুলি হতে পারে তা বিস্তারিতভাবে বর্ণনা করেছেন। এই ধারণাগুলি ইয়াহু দ্বারা মার্চ 2010 সালে প্রকাশিত চিন্তাভাবনার প্রতিধ্বনি করে! ডেভেলপার নিকোলাস সি. জাকাস এগুলিকে নিম্নরূপ সংক্ষিপ্ত করা হয়েছেঃ ক্রস ব্রাউজার সমস্যাঃ হোস্ট বস্তুগুলি নিয়ম, অ-সঙ্গতিপূর্ণ আই. ই. ডি. ও. এম আচরণ ইত্যাদির সাপেক্ষে নয়। নামের সংঘর্ষের সম্ভাবনা ওভারহেড পারফরম্যান্স 2008 সালের মধ্যে, বর্তমান ব্রাউজারগুলির নতুন সংস্করণগুলির সাথে মিলিত প্রোটোটাইপের পুরানো সংস্করণগুলিতে ডিওএম-এক্সটেনশন পদ্ধতি ব্যবহার করার নির্দিষ্ট সমস্যাগুলি ইতিমধ্যে নথিভুক্ত করা হয়েছিল। element.hide ()-এর মতো পূর্ব-বিদ্যমান 'হোস্ট' ডিওএম বস্তুতে নতুন পদ্ধতি এবং বৈশিষ্ট্য যুক্ত করার পরিবর্তে, এই সমস্যাগুলির সমাধান হল এই হোস্ট বস্তুর চারপাশে মোড়ক বস্তু সরবরাহ করা এবং এগুলিতে নতুন পদ্ধতিগুলি প্রয়োগ করা। জেকুয়েরি সেই নামের লাইব্রেরিতে এমন একটি মোড়ক বস্তু। আরও দেখুন আয়াক্স (প্রোগ্রামিং) জাভাস্ক্রিপ্ট ফ্রেমওয়ার্কের তুলনা মুটুলস জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক জেকুয়েরি জাভাস্ক্রিপ্ট ফ্রেমওয়ার্ক জাভাস্ক্রিপ্ট লাইব্রেরি রেফারেন্স গ্রন্থপঞ্জি বাহ্যিক লিঙ্ক জাভাস্ক্রিপ্ট লাইব্রেরি আয়াক্স (প্রোগ্রামিং) এমআইটি লাইসেন্স ব্যবহার করে সফ্টওয়্যার