node.js کی تازہ ترین اہم رہائی جاوا اسکرپٹ کمیونٹی میں بہت سے اہم اصلاحات لاتا ہے، بشمول تازہ ترین جاوا اسکرپٹ انجن، این پی ایم ورژن 5، گوگل کے V8، NODE.JS API، async_hooks، ایک whatwg url پارس، زیادہ محفوظ بفر اور زیادہ. یہاں ہم آپ کو ان خصوصیات اور اس رہائی کے دوسرے اہم پہلوؤں پر اپ ڈیٹ کریں گے.
NODE.JS 8 کوڈ کا نام کاربن کے تحت جاری کیا گیا ہے، اور اب دستیاب ہے NODE.JS سائٹ . یہ ایک اور 18 ماہ کے لئے فعال طور پر کام کیا جائے گا (کوئی نئی خصوصیات، صرف بگ اصلاحات، سیکورٹی اصلاحات اور این پی ایم اپ ڈیٹس)، بحالی کے موڈ میں جانے سے پہلے. پچھلے ریلیز کے ساتھ، بحالی کے موڈ ریلیزز کے دوران صرف اہم سیکورٹی اپ ڈیٹس اور بگ اصلاحات ملے گی.
یہ کہنے کے لئے محفوظ ہے کہ سے نوڈ.ج کے ارد گرد ہو چکا ہے، یہ سب سے بڑی اپ ڈیٹس میں سے ایک ہے جس میں رن ٹائم نے کبھی بھی موصول کیا ہے - یہ تبدیل کرتا ہے کہ کس طرح مقامی اضافے کو لکھا جاتا ہے اور اضافی سیکورٹی اور کارکردگی میں بہتری لاتا ہے.
ریسنگ اسٹیک کمپنیوں کو تربیت، مشاورت یا ترقی کے ساتھ چار سال کے لئے نوڈ.ج کے ساتھ کامیاب ہونے میں مدد مل رہی ہے. ہم سب سے بڑی جدوجہد میں سے ایک جو ہم نے منصوبوں کے لئے مقامی انحصار کو شامل کیا تھا.
NODE.JS 8 سے پہلے، اگر ایپلی کیشنز کو اصل کوڈ کے ساتھ ماڈیولز پر منحصر کیا گیا تھا، جب بھی نئے نوڈ.جس ورژن پہنچے تو، ایک ایپلی کیشن برقرار رکھنے والے آپ کو آپ کے انحصار کو دوبارہ کرنا پڑا. اگر آپ خوش قسمت تھے تو، انہوں نے پہلے کام کیا.
یہ عمل بہت زبردست کام ماڈیول کے برقرار رکھنے والوں کے ساتھ ممکن ہوسکتا ہے کہ ان کے ماڈیولز کو غیر مطابقت پذیر نوڈ.ج کے ورژن میں کام کرنے میں ڈال دیا گیا ہے، زیادہ تر نان (NODE.JS مقامی خلاصہ) نامی ایک ماڈیول کی مدد سے.
یہ عمل مثالی طور پر ہے، کیونکہ بہت سے کمپنیاں ان کی انحصار کو اپ ڈیٹ کرنے میں ناکام رہے ہیں اگر وہ مرتب نہیں کیا جاسکتا، اور اس نے ماڈیول کو برقرار رکھنے والوں پر بھی ایک بہت بڑا اضافی کام کا بوجھ ڈال دیا. اس مسئلے کو حل کرنے کے لئے، NODE.JS API (یا N-API) متعارف کرایا گیا تھا.
NODE.JS API NODE.JS کے سب سے زیادہ اہم اصلاحات میں سے ایک ہے 8. یہ ایک اچھی طرح سے بیان کردہ ABI (درخواست بائنری انٹرفیس) کو node.js کو اپنی مجازی مشین اجناسک بنانے کے لئے لاتا ہے. اس کا مطلب یہ ہے کہ مقامی ماڈیولز کو صرف Google کے V8 جاوا اسکرپٹ انجن کا استعمال کرتے ہوئے مختلف نوڈ.ج ورژن کے ساتھ کام نہیں کرے گا، لیکن مائیکروسافٹ کے چاکرا کے ساتھ بھی.
اب کے لئے، این-اے پی آئی ایک تجرباتی ریاست میں ہے، مطلب یہ ہے کہ دونوں عمل درآمد اور API دونوں کے ساتھ اہم تبدیلییں ہوسکتی ہیں. اس کے ساتھ، مقامی ماڈیول کو برقرار رکھنے والوں کو نئے انٹرفیس کی کوشش کرنے اور رائے دینے کے لئے حوصلہ افزائی کی جاتی ہے.
اگر آپ ایک ماڈیول برقرار رکھنے والے ہیں تو، آپ اپنے ماڈیول کے ایک این اے پی کے ورژن کو اپنے مرکزی ماڈیول ورژن کے ساتھ متوازی میں جاری کر سکتے ہیں. ایسا کرنے کے لئے، سرکاری سفارش آپ کے ماڈیول کے ایک ورژن کو این پی ایم کے ساتھ این پی ایم کے ساتھ شائع کرنا ہے.
N-API ورژن شائع کرنے کے لئے، آپ کو کرنا ہے:
اس طرح آپ اس بات کو یقینی بناتے ہیں کہ این-اے پی آئی ورژن تازہ ترین رہائی نہیں بنیں گے، لہذا اگر کوئی آپ کے ماڈیول کو انسٹال کرتا ہے تو، ڈیفالٹ کی طرف سے وہ غیر این-اے پی آئی ورژن حاصل کرتے ہیں.
یارن، فیس بک کے انجینئرز کی طرف سے پیدا پیکج مینیجر، اکتوبر 2016 میں جاری کیا گیا تھا. اس نے سرکاری این پی ایم کلائنٹ کی کچھ کمی سے خطاب کرنے کی کوشش کی، زیادہ تر زیادہ سے زیادہ کارکردگی کا مظاہرہ اور تعیناتی بننے کی کوشش کی. ان میں سے زیادہ تر بدعتیں NPM 5 میں بھی شامل ہیں.
یارن کی طرح، این پی ایم 5 نے ایک تالا فائل میکانزم متعارف کرایا - جب بھی آپ اپنے منصوبے میں ایک نئی انحصار انسٹال کر رہے ہیں، تو اسے خود کار طریقے سے نہ صرف شامل کیا جائے گا پیکیج. json. لیکن ایک نیا فائل کہا جاتا ہے پیکیج- lock.json. اس کے ساتھ ساتھ.
آپ پوچھ سکتے ہیں کہ فرق کے درمیان کیا فرق ہے پیکیج- lock.json. اور npm-shrinkwrap.json. ، جیسا کہ این پی ایم- سکڑڑپ کے طور پر ہمیشہ کے لئے این پی ایم میں کیا گیا ہے؟ لمبی کہانی مختصر، وہ بنیادی طور پر اسی طرح ہیں، لیکن پیکیج- lock.json. خود کار طریقے سے پیدا کیا جاتا ہے.
ان کا مقصد یہ ہے کہ اس کی وضاحت کرنے کے لئے کہ انحصار درخت این پی ایم آپ کے پیکج کے لئے تخلیق کرنا ضروری ہے. اگر آپ دونوں ہیں، npm-shrinkwrap. قبل از کم لے جائے گا. این پی ایم کی سفارش کی بنیاد پر، آپ کو استعمال کرنا چاہئے npm-shrinkwrap.json. اگر آپ اسے شائع کرنا چاہتے ہیں، تو آپ کے ماڈیول صارفین بھی اس کا استعمال کریں گے. دوسری طرف، آپ کو اندرونی طور پر پیکج-تالا لگا دیا جانا چاہئے - یہاں تک کہ ذخیرہ کرنے میں بھی جانچ پڑتال کی.
لیکن این پی ایم 5 میں بہتری میں بہتری نے ایک تالا فائل کو شامل کرنے کے ساتھ بند نہیں کیا ہے - نئے ورژن کے ساتھ، آپ انسٹال کرنے والے تمام ماڈیول خود کار طریقے سے محفوظ ہیں، اور وہ آپ دونوں کو شامل کیا جائے گا پیکیج. json. اور پیکیج- lock.json. فائل.
راستہ NPM سکرپٹ کا کام بھی تھوڑا سا بدل گیا ہے. سب سے پہلے، پہلے سے طے شدہ سکرپٹ اب سب کچھ اور اس سے پہلے چلتے ہیں، لہذا وہ اصل میں اسے پڑھتے ہیں اس سے پہلے کہ وہ node_modules ڈائرکٹری میں ترمیم کرسکتے ہیں. اس کے علاوہ، دو نئے سکرپٹ شامل کردیئے گئے ہیں - پرییک اور پوسٹ پیک. وہ دونوں این پی ایم پیک اور این پی ایم پر بھی شائع کرتے ہیں، لیکن این پی ایم انسٹال پر نہیں.
Node.js کے دل میں جاوا اسکرپٹ انجن ہے جو آپ کے جاوا اسکرپٹ کوڈ کی تشہیر کرتا ہے، اس سے بائیڈڈڈ تخلیق کرتا ہے اور آپ کی درخواست چلانے کی اجازت دیتا ہے. نئے نوڈ. js 8 رہائی کے ساتھ، یہ بھی اپ ڈیٹ کیا گیا تھا.
تازہ کاری V8 انجن کے ساتھ، اہم کارکردگی میں بہتری متعارف کرایا جاتا ہے - لیکن زیادہ اہم بات یہ ہے کہ، یہ آگے سے مطابقت پذیر درخواست بائنری انٹرفیس کی ضمانت دی جاتی ہے. اس کا مطلب یہ ہے کہ node.js v8 انجن کو بغیر کسی بڑے node.js کی رہائی کے بغیر اپ ڈیٹ کرنے کے قابل ہو جائے گا.
یہ اہم ہے، جیسا کہ V8 انجن کے نئے ورژن ایک نیا کمپائلر پائپ لائن متعارف کرایا جائے گا، جو نوڈ.ز کے لئے مزید کارکردگی میں بہتریوں کو متعارف کرایا جائے گا. یہ اپ ڈیٹ بہت اہم تھا کہ یہ اصل نوڈ.ج 8 کی رہائی کی تاریخ ملتوی کردی گئی تھی.
موجودہ پائپ لائن بہت پیچیدہ ہے، اور نئی زبان کی خصوصیات متعارف کرانے کا مطلب عام طور پر پائپ لائن کے متعدد حصوں کو چھونے کا مطلب ہے. نئے پائپ لائن کے ساتھ، یہ بہت آسان بن جائے گا.
اگنیشن، نئے مترجم، اور ٹربوفان، نئی اصلاح سازی کمپائلر، تقریبا تین سے آدھے سال کی ترقی میں رہا ہے. وہ بنیاد ہیں جس پر نئی زبان کی خصوصیات پر تعمیر کی جائے گی. ان میں یہ تجربہ شامل ہے کہ Google پر V8 ٹیم کو حقیقی زندگی جاوا اسکرپٹ ایپلی کیشنز کی پیمائش سے جمع کیا گیا ہے.
بہتر سمجھنے کے لئے کہ Async ہکس کیا ہیں، چلو ایک قدم واپس آتے ہیں اور پہلے ہی تسلسل مقامی اسٹوریج کے ساتھ گرفت میں جائیں گے. وہ دھاگے والے پروگرامنگ میں دھاگے کے مقامی اسٹوریج کی طرح کام کرتے ہیں، لیکن نوڈ. js میں یہ سیاق و سباق کو منتقل کرنے کے لئے کال بیک بیک استعمال کرتا ہے.
تصور کریں کہ آپ ایک ایسی درخواست لکھ رہے ہیں جو ڈیٹا بیس سے ایک مصنوعات حاصل کرتی ہے، پھر بعد میں آپ کو اپنے HTML جواب میں اسے بھیجنا چاہتے ہیں:
CONST CREATINEMSPACE = کی ضرورت ہے ('تسلسل - مقامی اسٹوریج'). تخلیقی معلومات
Const Session = Createnamespace ('میرا اے پی پی سیشن')
COST DB = کی ضرورت ہے ('./ db.js')
فنکشن Onrequest (اختیارات، اگلا) {
db.fetchuserbyid (اختیارات.id، تقریب (غلطی، صارف) {
اگر (غلطی) {
اگلا واپس (غلطی)
}
سیشن. ایسیٹ ('صارف'، صارف)
اگلے()
})
بعد میں، اگر آپ صارف اعتراض تک رسائی حاصل کرنا چاہتے ہیں، تو آپ کو یہ کرنے کی ضرورت ہے کہ اسے مقامی اسٹوریج سے پکڑ لیا جائے.
Const GetNamespace = کی ضرورت ہے ('تسلسل - مقامی اسٹوریج'). GETNamespace
Const Session = GetNamespace ('میرا سیشن')
مسلسل رینڈر = کی ضرورت ہے ('./ render.js')
فنکشن ختم (جواب) {
COST صارف = سیشن. حاصل کریں ('صارف')
رینڈر ({صارف: صارف}). پائپ (جواب)
}
یہ تکنیک بڑے پیمانے پر درخواست کی کارکردگی کی نگرانی فراہم کرنے والوں کی طرف سے استعمال کیا جاتا ہے، جیسے ریزنگ اسٹیک کی طرف سے ٹریس، پھانسی کے سیاق و سباق کو برقرار رکھنے اور پیداوار کے نظام سے نگرانی کی معلومات جمع کرنے کے لئے.
ASYNC ہکس کے ساتھ، اسی طرح کی خصوصیت نوڈ.جس کور میں منتقل ہوجاتی ہے - یہ ان کی زندگی کی جانچ کے ذریعہ غیر جانبدار درخواستوں اور ہینڈلر کو ٹریک کرنے میں مدد ملتی ہے. The. async_hooks. ماڈیول ایک API فراہم کرتا ہے جو کال بیک بیک کو رجسٹر کرنے کے لئے ایک asynchronous وسائل کی زندگی کو ٹریک کرنے کے لئے فراہم کرتا ہے.
NODE.JS 8 سے پہلے، اگر آپ کو ایک ایسی درخواست میں بنیادی ماڈیولز استعمال کرنا چاہتے ہیں جو وعدوں کا استعمال کرتے ہیں، تو آپ کو بنیادی طور پر بنیادی ماڈیول لپیٹ کرنا پڑا تاکہ وہ اسی طرح استعمال کیا جا سکے. اس نے اس طرح کچھ دیکھا:
Const FS = کی ضرورت ہے ('ایف ایس')
فنکشن ReadFilePromise (... regs) {
نیا وعدہ واپس لو ((حل، ردعمل) = & gt؛ {
fs.readfile (... args، (غلط، نتیجہ) = & gt؛ {
اگر (غلط) {
واپسی کا حل (غلط)
}
حل (نتیجہ)
})
})
}
ReadFilePromise ('./ paject.json'، 'UTF-8')
.یہ ((res) = & gt؛ کنسول. log (res)
.catch ((ERR) = & GT؛ کنسول. log (ERR))
NODE.JS 8 کے ساتھ، ایک نیا مددگار طریقہ UTIL کور ماڈیول، util.promisify میں شامل کیا جاتا ہے. یہ معیاری node.js callback- سٹائل Apis کی اجازت دیتا ہے کہ ایک فنکشن میں لپیٹ ہو جو وعدوں کو واپس آتی ہے.
اس فنکشن کا استعمال کرتے ہوئے، مندرجہ بالا نمونہ آسان ہے اور یہ بن جاتا ہے:
COST FS = کی ضرورت ہے ('ایف ایس')
Const Promisify = ضرورت ('util') کی ضرورت ہے. پروموشنل
ReadFilePromise = پروموشنل (FS.readfile)
ReadFilePromise ('./ paject.json'، 'UTF-8')
.یہ ((res) = & gt؛ کنسول. log (res)
.catch ((ERR) = & GT؛ کنسول. log (ERR))
node.js ورژن 8 سے پہلے، نئے بفر (نمبر) کی تعمیر کا استعمال کرتے ہوئے بفروں کو زرو کے ساتھ میموری کی جگہ شروع نہیں کیا. نتیجے کے طور پر، نئے بفر کی مثالیں حساس معلومات پر مشتمل ہوسکتی ہیں، سنگین سیکورٹی کے مسائل کی وجہ سے - یہاں تک کہ مقبول ماڈیولز جیسے مونگ، ڈبلیو ایس یا درخواست ماڈیول متاثر ہوا.
لیکن ہم وہاں کیسے گئے؟ جب جاوا اسکرپٹ براؤزر سے سرور کی طرف منتقل کردیا گیا تو، تیز رفتار اور آسان ڈیٹا پروسیسنگ کی ضرورت تھی - لہذا بفر کلاس شامل کیا گیا تھا. بفر بائنری ڈیٹا کی ایک متغیر صف ہے. جب تعمیر کے ساتھ استعمال کیا جاتا ہے جو نئے بفر کے سائز کے بارے میں پوچھتا ہے، تو اس نے صرف میموری کی جگہ کو محفوظ کیا، لیکن اسے صاف نہیں کیا.
جیسا کہ آپ کے سرور ایک ہی وقت میں ایک سے زیادہ صارفین کی خدمت کرسکتے ہیں (آپ کے براؤزر کے برعکس)، یہ ممکن ہے کہ تازہ مختص شدہ میموری کی جگہ میں دیگر صارفین (یہاں تک کہ پاس ورڈز!) سے حساس معلومات شامل ہیں، اور ممکنہ طور پر حملہ آور سے بے نقاب ہوسکتا ہے.
اگرچہ یہ نئے بفر کی تخلیق کی کارکردگی کو فروغ دینے کے لئے جان بوجھ کر فیصلہ تھا، ہم میں سے اکثر کے لئے، یہ مقصد کا استعمال نہیں تھا - یہاں تک کہ اگر یہ دستاویزی کیا گیا تھا. اس کی وجہ سے، NODE.JS 8 کے ساتھ شروع ہونے والے، بفروں کو نئے بفر (نمبر) یا بفر (نمبر) کا استعمال کرتے ہوئے مختص کیا گیا ہے (نمبر) خود بخود زروس سے بھرا ہوا ہے.
NODE.JS 8 سے پہلے، اگر آپ اپنے نوڈ. جے ایپلی کیشنز کو ڈیبگ کرنا چاہتے ہیں تو، نوڈ ڈیبگ کا استعمال کرتے ہوئے، بلٹ ان ڈیبگر شروع کرنے میں سب سے آسان حل میں سے ایک تھا. index.js. node.js 8 کے ساتھ، یہ نوڈ انسپکٹر کی طرف سے ہٹا دیا اور تبدیل کیا جا رہا ہے. آپ اب بھی CLI ڈیبگر کا استعمال کرسکتے ہیں، لیکن یہ جلد ہی ہٹا دیا جائے گا.
اب سے، آپ کو نوڈ کا استعمال کرنا چاہئے - انڈیکس. js. ، یا نوڈ - بریک-برک index.js. اگر آپ چاہتے ہیں کہ ڈیبگر کو درخواست کی پہلی سطر پر وقفے وقفے پر ڈالیں. ایک بار جب آپ اسے چلاتے ہیں، آپ کو WebSocket لنک مل جائے گا جو گوگل کروم اپنے ڈیبگر سے منسلک کرنے کے لئے استعمال کرسکتا ہے.
آپ کو سر کرنا چاہئے کروم: // معائنہ آپ کے کروم براؤزر میں، اور یہ خود کار طریقے سے چل رہا ہے NODE.JS درخواست کو تسلیم کرے گا، آپ کو منسلک کرنے کے قابل بنائے گا. آپ کے عمل سے منسلک ہونے کے بعد، آپ کو اپنے چلانے والے نوڈ.جی کی درخواست کا معائنہ کرنے کے لئے کروم کی ڈیبگر مل جائے گی.
پچھلا، اگر آپ رن ٹائم میں موصول ہونے والی غلطی کی جانچ پڑتال کرنا چاہتے ہیں اور اس کے مطابق کام کرتے ہیں تو، زیادہ تر معاملات میں آپ کو غلطی کا پیغام چیک کرنا پڑا. یہ غلطی کا شکار تھا، کیونکہ غلطی کے پیغامات نئے نوڈ. جے ورژن کے ساتھ تبدیل ہوسکتے ہیں.
node.js 8 کے ساتھ، جامد غلطی کوڈوں کو زیادہ سے زیادہ غلطیوں کو تفویض کیا گیا ہے - یہ اب بھی ایک کام میں پیش رفت ہے، لیکن ایک بار یہ ختم ہوجاتا ہے، یہ غلطی کوڈ تبدیل نہیں ہوگی، یہاں تک کہ اگر غلطی میں پیغام بھی .
مثال کے طور پر، نئے متعارف کرایا Whatwg Url API. ایک پھینک دیں گے ERR_INVALID_URL. مندرجہ ذیل snippet میں خرابی، جیسا کہ پیرامیٹر ایک درست URL نہیں ہے:
COST URL = کی ضرورت ہے ('یو آر ایل'). یو آر ایل
CONT MYURL = نیا یو آر ایل ('/ فو')
جیسا کہ آپ دیکھ سکتے ہیں، NODE.JS 8 اپ ڈیٹ کی رہائی نے جاوا اسکرپٹ کمیونٹی میں بہت سے نئی اور دلچسپ بہتری میں بہتری لایا ہے. ان تمام نئی خصوصیات کے ساتھ تجربے شروع کرنے کے لئے، سر پر سر nodejs.org ، Node.js 8 بائنری ڈاؤن لوڈ کریں اور اپنے نئے ٹول سیٹ کے ساتھ کھیلنا شروع کریں!
یہ مضمون اصل میں شائع ہوا نیٹ میگزین مسئلہ 296. اسے خریدیں .
متعلقہ مضامین:
یہ سبق آپ کو Houdini FX کا استعمال کرتے ہوئے ختم کرنے کے لئے شروع سے ایک متحر�..
گزشتہ چند سالوں میں ڈیجیٹل پینٹنگ کے اوزار سنجیدگی سے اعلی درجے کی ہیں. ..
اس ورکشاپ کے لئے، میں آپ کو صرف آپ کی تخیل سے حروف کو خالی کرنے کے لئے ای�..
کسی کے لئے پیشہ ورانہ طور پر کام کرنے کے لئے کردار ڈیزائن ، ایک �..
زیادہ موثر کام کے بہاؤ آپ کی رفتار مجسمہ کی تکنیک کو بہتر بنانے کا واضح �..
تمام شعبوں سے ڈیزائنرز اور تخلیق کاروں کو روشن اور چمکدار چیزوں کو جمع �..
یہ گزشتہ سال ویڈیو کھیلوں کی صنعت کے لئے ایک کھیل مبدل رہا ہے اور کھیلوں..