Prototype JavaScript Framework
پروٹوٹائپ جاوا اسکرپٹ فریم ورک ایک جاوا اسکرپٹ فریم ورک ہے جسے سام اسٹیفنسن نے فروری 2005 میں روبی آن ریلز میں ایجیکس سپورٹ کے حصے کے طور پر بنایا تھا۔ اسے جاوا اسکرپٹ کوڈ کی ایک واحد فائل کے طور پر لاگو کیا جاتا ہے، جسے عام طور پر prototype.js کا نام دیا جاتا ہے۔ پروٹوٹائپ کو اسٹینڈ لون تقسیم کیا جاتا ہے، بلکہ بڑے منصوبوں کے حصے کے طور پر بھی، جیسے روبی آن ریلز، script.aculo.us اور ریکو۔ W3techs کے مطابق، پروٹوٹائپ تمام ویب سائٹس کا 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 کال سے خام XML آؤٹ پٹ واپس کرتا ہے، جبکہ 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 (یو آر ایل) ؛}،// مزید طریقے شامل کریں۔) ؛ فریم ورک فنکشن Object.extend (ڈیسٹ، src) دو اشیاء کو پیرامیٹرز کے طور پر لیتا ہے اور دوسرے آبجیکٹ کی خصوصیات کو پہلے میں کاپی کرتا ہے۔ مشترکہ شے بھی فنکشن کے نتیجے میں واپس آتی ہے۔ جیسا کہ اوپر کی مثال میں، پہلا پیرامیٹر عام طور پر بیس آبجیکٹ بناتا ہے، جبکہ دوسرا ایک گمنام آبجیکٹ ہے جو صرف اضافی خصوصیات کی وضاحت کے لیے استعمال ہوتا ہے۔ پورا سب کلاس ڈیکلریشن فنکشن کال کے قوسین کے اندر ہوتا ہے۔ مسائل دیگر جاوا اسکرپٹ لائبریریوں جیسے جے کوری کے برعکس، پروٹوٹائپ ڈی او ایم کو بڑھاتا ہے۔ لائبریری کے اگلے بڑے ورژن میں اسے تبدیل کرنے کا منصوبہ ہے۔ اپریل 2010 میں، بلاگر جوری 'کنگکس' زیتسیو (پروٹوٹائپ کور کے) نے W3C ڈی او ایم کے ذریعہ بیان کردہ اشیاء میں نئے طریقوں اور خصوصیات کو جوڑنے سے آنے والے مسائل کو تفصیل سے بیان کیا۔ یہ خیالات مارچ 2010 میں یاہو! کے ذریعہ شائع کردہ خیالات کی بازگشت کرتے ہیں۔ ڈویلپر نکولس سی زکاس ان کا خلاصہ مندرجہ ذیل کراس براؤزر کے مسائل کے طور پر کیا گیا ہے: میزبان اشیاء قواعد، غیر تعمیل آئی ای ڈی او ایم رویے وغیرہ کے تابع نہیں ہیں۔ نام کے تصادم کا امکان اوور ہیڈ کارکردگی 2008 تک، موجودہ براؤزرز کے نئے ورژن کے ساتھ مل کر پروٹوٹائپ کے پرانے ورژن میں ڈی او ایم-ایکسٹینشن طریقوں کے استعمال کے ساتھ مخصوص مسائل پہلے ہی دستاویز کیے جا رہے تھے۔ پہلے سے موجود 'میزبان' ڈی او ایم آبجیکٹ جیسے عنصر میں نئے طریقے اور خصوصیات شامل کرنے کے بجائے، جیسے کہ element.hide ()، ان مسائل کا حل ان میزبان آبجیکٹ کے ارد گرد ریپر آبجیکٹ فراہم کرنا اور ان پر نئے طریقوں کو نافذ کرنا ہے۔ jQuery اس نام کی لائبریری میں ایک ایسا ریپر آبجیکٹ ہے۔ ایجیکس (پروگرامنگ) جاوا اسکرپٹ فریم ورک کا موازنہ موٹولز جاوا اسکرپٹ فریم ورک جکوری جاوا اسکرپٹ فریم ورک جاوا اسکرپٹ لائبریری حوالہ جات ببلیوگرافی بیرونی روابط جاوا اسکرپٹ لائبریریاں ایجیکس (پروگرامنگ) سافٹ ویئر ایم آئی ٹی لائسنس کا استعمال کرتے ہوئے