في أبريل 2022 ، تم إصدار NodeJS الإصدار Node v18. كان تحديث Node v18 أحد أكثر التحديثات المتوقعة منذ Node v14 ، والذي أضاف واجهة برمجة تطبيقات التخزين المحلي غير المتزامن وواجهة نظام تجميع الويب (WASI) ودعم وحدات ECMAScript.

تضيف ترقية الإصدار v18 تحسينات مختلفة إلى NodeJS ، بما في ذلك واجهة برمجة تطبيقات الجلب الممكّنة عالميًا بشكل افتراضي ، ودعم واجهة برمجة تطبيقات تدفق الويب ، ووحدة عداء اختبار أساسية. نغطي هنا معظم التغييرات المهمة التي تم إجراؤها على NodeJS في الإصدار 18.

1. واجهة برمجة تطبيقات الجلب

توفر واجهة برمجة تطبيقات الجلب واجهة للوصول إلى طلبات واستجابات HTTP ومعالجتها. قبل NodeJS v18 ، كانت طلبات HTTP التي يتم إجراؤها باستخدام NodeJS تتطلب مكتبات تابعة لجهات خارجية مثل أكسيوس و عقدة الجلب أو المعقد http أو https حزمة.

يجعل NodeJS v18 واجهة برمجة تطبيقات الجلب متاحة في النطاق العالمي افتراضيًا. تلغي واجهة برمجة تطبيقات الجلب العالمية الحاجة إلى مكتبات تابعة لجهات خارجية مثل أكسيوس والرمز المطول المرتبط بامتداد https الحزمة عند جلب الموارد بشكل غير متزامن عبر الشبكة.

فيما يلي مثال على استخدام واجهة برمجة التطبيقات:

instagram viewer
مقدار ثابت getData = غير متزامنوظيفة () {
محاولة {
مقدار ثابت الدقة = انتظر جلب ("https://example.com/users");
مقدار ثابت البيانات = انتظر res.json () ؛
وحدة التحكم.تسجيل البيانات)؛
} قبض على (خطأ) {
وحدة التحكم.سجل(حدث خطأ ما ، $ {error}`);
}
};
احصل على البيانات()؛

ال احصل على البيانات وظيفة أعلاه ترسل أ احصل على طلب جلب الموارد من " https://example.com/users". تأخذ واجهة برمجة تطبيقات الجلب أيضًا معلمة ثانية اختيارية ، كائن خيارات. يجب أن تحتوي كائنات الخيارات على تفاصيل حول الطلب. فمثلا:

مقدار ثابت بيانات المستخدم = {
اسم: "جون سنو",
العمر: 25،
جنس: "م",
};
مقدار ثابت postData = غير متزامنوظيفة (بيانات) {
محاولة {
مقدار ثابت الدقة = انتظر جلب ("https://example.com/users "، ​​{
طريقة: "بريد",
هيئة: جسون.stringify (بيانات) ،
});
مقدار ثابت responseData = انتظر res.json () ؛
وحدة التحكم.سجل(
كان الطلب ناجحاً ، وإليكم التفاصيل: $ {responseData}`
);
} قبض على (خطأ) {
وحدة التحكم.سجل(كان الطلب غير ناجح ، وإليكم التفاصيل: $ {error}`);
}
};
postData (بيانات المستخدم) ؛

على الرغم من أن جلب API لا يزال تجريبي، فمن المفترض أن تعمل بشكل جيد لمعظم المستخدمين.

2. دعم واجهة برمجة تطبيقات Web Streams

فكر في الوسائط المتعددة أو تطبيقات الوقت الفعلي ؛ هذه حالة استخدام أساسية لواجهة برمجة تطبيقات تدفقات الويب. واجهة برمجة تطبيقات تدفقات الويب عبارة عن مجموعة من الواجهات التي تتيح التقسيم البرمجي لمورد كبير يتم تلقيه عبر الشبكة إلى أجزاء صغيرة ، ثم تقوم بمعالجتها شيئًا فشيئًا.

مثال على الدفق هو نص الاستجابة الذي تم إرجاعه بواسطة ناجح أحضر طلب. جسم الاستجابة من النوع ReadableStream.

يعرض NodeJS v18 ملف تجريبي تنفيذ واجهة برمجة تطبيقات تدفقات الويب. مع هذا التحديث ، أصبحت واجهات برمجة تطبيقات دفق الويب متاحة الآن في كل من العميل والخادم ، مما يجعل التطوير أكثر وضوحًا.

يمكنك العثور على قائمة التدفقات المدعومة حاليًا في ملف ملاحظات الإفراج الرسمية.

3. وحدة عداء الاختبار

في الإصدارات السابقة من NodeJS ، تم إجراء الاختبار بدون مكتبات تابعة لجهات خارجية باستخدام ملفات يجزم مكتبة.

ال يجزم سهلت المكتبة كتابة اختبارات بسيطة ، ولكن كان لها قيود كبيرة جعلت من الصعب العمل مع مجموعات اختبار متعددة. عززت هذه القيود الحاجة إلى مكتبات الطرف الثالث مثل Jest لإجراء اختبارات أكثر تقدمًا.

يلغي NodeJS v18 الحاجة إلى مكتبات الطرف الثالث من خلال إدخال وحدة عداء الاختبار الأساسية الخاصة بـ NodeJS. يدعم عداء الاختبار ميزات مثل الاختبارات الفرعية وتخطي الاختبار واختبارات رد الاتصال وما إلى ذلك ، مثل Jest.

لاستخدام عداء الاختبار ، يجب عليك الاستيراد يجزم من يجزم و اختبار من العقدة: الاختبار. لاحظ ال "العقدة:" بادئة؛ إنه بروتوكول Node الجديد الذي يميز حزم العقدة الأساسية عن الحزم التي أنشأها المستخدم.

مقدار ثابتيجزم = تتطلب ("يجزم");
مقدار ثابت اختبار = يتطلب("عقدة: اختبار") ؛

في ما يلي مثال على اختبار بسيط باستخدام وحدة عداء الاختبار:

اختبار("تحقق مما إذا كانت السلاسل هي نفسها"، (ر) => {
assert.strictEqual ("اختبار", "اختبار");
});

ستكون نتائج الاختبار التي يعرضها عداء الاختبار في TAP (اختبار أي شيء بروتوكول) صيغة. لاحظ أن هذه الميزة لا تزال تجريبية وقد تتغير في أي وقت.

4. ترقيات وإصلاحات أخرى

يتميز تحديث Node v18 أيضًا بتحديث لمحرك v8 إلى الإصدار 10.1. محرك v8 هو وقت تشغيل JavaScript الذي تستخدمه NodeJS لتنفيذ JavaScript.

تحديث v8 يجعل طرق المصفوفةfindLast و findLastIndex متوفر في NodeJS ويحسن أداء حقول الفصل وطرق الفصل الدراسي الخاص.

يعرض NodeJS أيضًا واجهات برمجة التطبيقات التالية على النطاق العام في ترقية Node v18:

  • سائل لزج
  • قناة BrodcastChannel

الترقية إلى Node v18

باستخدام Node v18 ، يمكنك اختبار تطبيق بأكمله بدون مكتبات خارجية ، وجلب الموارد بشكل غير متزامن بدون مكتبات خارجية ، وتمكين تدفقات الويب في الخادم الخاص بك.

ومع ذلك ، تجدر الإشارة إلى أن هذه الميزات لا تزال تجريبية ويمكن تغييرها في أي وقت. يمكنك الترقية إلى NodeJS v18 باستخدام ملف رابط التحميل الرسمي.