سرور سائیڈ JavaScript پلیٹ فارم Node.js 21.0 دستیاب ہے۔

Node.js 21.0 جاری کیا گیا، جاوا اسکرپٹ میں نیٹ ورک ایپلی کیشنز چلانے کا ایک پلیٹ فارم۔ Node.js 21.0 برانچ کو 6 ماہ کے لیے سپورٹ کیا جائے گا۔ آنے والے دنوں میں، Node.js 20 برانچ کا استحکام مکمل ہو جائے گا، جو LTS کا درجہ حاصل کرے گی اور اپریل 2026 تک اس کی حمایت کی جائے گی۔ Node.js 18.0 کی پچھلی LTS برانچ کی دیکھ بھال ستمبر 2025 تک رہے گی، اور آخری LTS برانچ 16.0 سے ایک سال پہلے اپریل 2024 تک۔

اہم بہتری:

  • Fetch API کو مستحکم قرار دیا گیا ہے، جو نیٹ ورک پر وسائل لوڈ کرنے اور سرور اور کلائنٹ سائیڈز پر کام کرنے کے لیے موزوں یونیورسل JavaScript کوڈ کی تحریر کو آسان بنانے کے لیے ڈیزائن کیا گیا ہے۔ عمل درآمد HTTP/1.1 undici کلائنٹ کے کوڈ پر مبنی ہے اور براؤزرز میں فراہم کردہ اسی طرح کے API کے جتنا ممکن ہو قریب ہے۔ API میں fetch() طریقہ اور Headers آبجیکٹ شامل ہیں۔ درخواست اور جواب، HTTP ہیڈر کی نمائندگی کرتے ہوئے، درخواست اور جواب۔ const res = await fetch('https://nodejs.org/api/documentation.json')؛ اگر (res.ok) { const data = انتظار کریں res.json(); console.log(ڈیٹا)؛ }
  • WebStreams API کے لیے سپورٹ، جو نیٹ ورک پر موصول ہونے والے ڈیٹا اسٹریمز تک رسائی فراہم کرتا ہے، کو مستحکم کر دیا گیا ہے۔ API آپ کے اپنے ہینڈلرز کو شامل کرنا ممکن بناتا ہے جو ڈیٹا کے ساتھ کام کرتے ہیں جیسے ہی نیٹ ورک پر معلومات پہنچتی ہیں، پوری فائل کے ڈاؤن لوڈ ہونے کا انتظار کیے بغیر۔ Node.js میں دستیاب اشیاء میں ReadableStream*, TransformStream*, WritableStream*, TextEncoderStream, TextDecoderStream، CompressionStream، اور DecompressionStream شامل ہیں۔
  • WebSocket کلائنٹ کا تجرباتی نفاذ شامل کیا گیا، براؤزرز کے ساتھ ہم آہنگ۔ WebSocket سپورٹ کو فعال کرنے کے لیے، "--experimental-websocket" جھنڈا فراہم کیا گیا ہے۔
  • CommonJS (Node.js کے لیے مخصوص) کی بجائے JavaScript ماڈیولز ESM (ECMAScript ماڈیولز، جو براؤزرز کے لیے ماڈیولز میں استعمال ہوتے ہیں) کے پہلے سے طے شدہ نفاذ کو استعمال کرنے کے لیے ایک تجرباتی موڈ شامل کیا گیا۔ تبدیلی ان ماڈیولز کو متاثر نہیں کرتی جن کی شکل واضح طور پر پیکیج.json میں "ٹائپ" فیلڈ کے ذریعے بیان کی گئی ہے، جو "--input-type" جھنڈے کے ذریعے بیان کی گئی ہے، یا فائل ایکسٹینشن (.mjs for ESM، .cjs) کی وجہ سے واضح ہے۔ کامن جے ایس کے لیے)۔ تاہم، ایسے ماڈیولز جن کی وضاحت CommonJS کے طور پر نہیں کی گئی ہے (مثال کے طور پر، ایک ".js" ایکسٹینشن ہے) نئے موڈ کے فعال ہونے پر انہیں ESM ماڈیول سمجھا جائے گا۔ نئے ماڈیول کی ترتیبات کو فعال کرنے کے لیے، "--تجرباتی-ڈیفالٹ-قسم" جھنڈا تجویز کیا گیا ہے۔
  • V8 انجن کو ورژن 11.8 میں اپ ڈیٹ کر دیا گیا ہے، جو Chromium 118 میں استعمال ہوتا ہے، جو اب ArrayBuffer.prototype.transfer کے طریقہ کار، صفوں کو گروپ کرنے کی اہلیت (groupBy طریقہ) اور WebAssembly کی ہدایات کو پروسیسنگ کنسٹنٹ (i32.add, i32.sub, i32.mul، i64 .add، i64.sub اور i64.mul)۔
  • ماڈیولز کو ترتیب دینے کے لیے رجسٹر اور کال شروع کرنے کے حق میں گلوبل پری لوڈ ہینڈلر کے لیے سپورٹ بند کر دی گئی ہے۔
  • fs.writeFile فنکشن میں ایک "فلش" آپشن شامل کیا گیا ہے تاکہ ڈیٹا کو ہر تحریری آپریشن کے بعد ڈرائیو میں فلش کیا جائے۔
  • یو آر ایل پارسنگ، فیچ API، اسٹریمز، نوڈ: ایف ایس، اور HTTP سے متعلق کوڈ کی بہتر کارکردگی۔
  • عالمی نیویگیٹر آبجیکٹ کو شامل کیا گیا۔ مثال کے طور پر، CPU کور کی تعداد کے بارے میں ڈیٹا حاصل کرنے کے لیے، آپ navigator.hardwareConcurrency پراپرٹی استعمال کر سکتے ہیں۔
  • "—ٹیسٹ" پیرامیٹر میں، چلانے کے لیے ٹیسٹ کو منتخب کرنے کے لیے گلوب ماسکس کے لیے سپورٹ شامل کیا گیا ہے (مثال کے طور پر، آپ "—test **/*.test.js" کی وضاحت کر سکتے ہیں)۔
  • بنڈل پیکیج مینیجر npm 10.2.0 اور llhttp 9.1.2 پارسر کو اپ ڈیٹ کر دیا گیا ہے۔
  • Visual Studio 2019 اور macOS کے 11.0 سے پرانے ورژن کے لیے سپورٹ بند کر دی گئی ہے۔

Node.js پلیٹ فارم ویب ایپلیکیشنز کے سرور سائیڈ سپورٹ، اور عام کلائنٹ اور سرور نیٹ ورک پروگرام بنانے کے لیے دونوں استعمال کیا جا سکتا ہے۔ Node.js کے لیے ایپلی کیشنز کی فعالیت کو بڑھانے کے لیے، ماڈیولز کا ایک بڑا مجموعہ تیار کیا گیا ہے، جس میں آپ HTTP، SMTP، XMPP، DNS، FTP، IMAP، POP3 سرورز اور کلائنٹس، انضمام کے لیے ماڈیولز کے نفاذ کے ساتھ ماڈیولز تلاش کر سکتے ہیں۔ مختلف ویب فریم ورک، WebSocket اور Ajax ہینڈلرز، DBMS (MySQL، PostgreSQL، SQLite، MongoDB) کے کنیکٹرز، ٹیمپلیٹ انجن، CSS انجن، کرپٹوگرافک الگورتھم کے نفاذ اور اتھارٹی سسٹمز (OAuth)، XML پارسر کے ساتھ۔

متوازی درخواستوں کی بڑی تعداد کو ہینڈل کرنے کے لیے، Node.js غیر مسدود ایونٹ پروسیسنگ اور کال بیک ہینڈلرز کی وضاحت پر مبنی ایک غیر مطابقت پذیر کوڈ کے عمل درآمد ماڈل کا استعمال کرتا ہے۔ ملٹی پلیکسنگ کنکشن کے لیے معاون طریقوں میں ایپل، کیو، /dev/poll، اور سلیکٹ شامل ہیں۔ کنکشن ملٹی پلیکسنگ کے لیے، libuv لائبریری کا استعمال کیا جاتا ہے، جو یونکس سسٹمز پر libev اور ونڈوز پر IOCP میں ایک اضافہ ہے۔ libeio لائبریری کا استعمال تھریڈ پول بنانے کے لیے کیا جاتا ہے، اور c-ares کو DNS سوالات کو نان بلاکنگ موڈ میں انجام دینے کے لیے مربوط کیا جاتا ہے۔ تمام سسٹم کالز جو بلاکنگ کا سبب بنتی ہیں تھریڈ پول کے اندر عمل میں لائی جاتی ہیں اور پھر، سگنل ہینڈلرز کی طرح، اپنے کام کا نتیجہ ایک بے نام پائپ کے ذریعے واپس بھیج دیتے ہیں۔ جاوا اسکرپٹ کوڈ کا نفاذ گوگل کے تیار کردہ V8 انجن کے استعمال سے یقینی بنایا جاتا ہے (اس کے علاوہ، مائیکروسافٹ Node.js کا ایک ورژن چکرا کور انجن کے ساتھ تیار کر رہا ہے)۔

اس کے بنیادی طور پر، Node.js Perl AnyEvent، Ruby Event Machine، Python Twisted فریم ورک اور Tcl میں ایونٹس کے نفاذ سے ملتا جلتا ہے، لیکن Node.js میں ایونٹ کا لوپ ڈویلپر سے پوشیدہ ہے اور ویب ایپلیکیشن میں ایونٹ پروسیسنگ سے ملتا جلتا ہے۔ براؤزر میں چل رہا ہے۔ node.js کے لیے ایپلی کیشنز لکھتے وقت، ایونٹ سے چلنے والے پروگرامنگ کی تفصیلات کو مدنظر رکھنا ضروری ہے، مثال کے طور پر، "var result = db.query("select..");" کرنے کے بجائے۔ کام کی تکمیل کے انتظار اور نتائج کے بعد کی کارروائی کے ساتھ، Node.js غیر مطابقت پذیر عمل کے اصول کا استعمال کرتا ہے، یعنی کوڈ کو "db.query("select.."، فنکشن (نتیجہ) {رزلٹ پروسیسنگ}) میں تبدیل کر دیا جاتا ہے، جس میں کنٹرول فوری طور پر مزید کوڈ کو منتقل کر دیا جائے گا، اور ڈیٹا آتے ہی استفسار کے نتیجے پر کارروائی ہو جائے گی۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں