Node v18 منتشر شده است، اما چه ویژگی های جدیدی برای NodeJS به ارمغان می آورد؟
در آوریل 2022، NodeJS Node v18 منتشر شد. بهروزرسانی Node v18 یکی از موردانتظارترین بهروزرسانیها از زمان Node v14 بوده است که API ذخیرهسازی محلی غیر همگام، یک رابط سیستم مونتاژ وب (WASI) و پشتیبانی از ماژولهای ECMAScript را اضافه کرد.
ارتقاء v18 پیشرفتهای مختلفی را به NodeJS اضافه میکند، از جمله یک API واکشی جهانی بهطور پیشفرض، پشتیبانی از وب استریم API و یک ماژول آزمایشی اصلی. در اینجا بیشتر تغییرات مهم NodeJS در نسخه 18 را پوشش می دهیم.
1. Fetch API
Fetch API یک رابط برای دسترسی و دستکاری درخواست ها و پاسخ های HTTP فراهم می کند. قبل از NodeJS v18، درخواستهای HTTP که با NodeJS انجام میشد به کتابخانههای شخص ثالث مانند axios و node-fetch یا بسته پیچیده http یا https نیاز داشت.
NodeJS v18 API واکشی را به صورت پیش فرض در محدوده جهانی در دسترس قرار می دهد. API واکشی جهانی نیاز به کتابخانههای شخص ثالث مانند axios و کدهای پرمخاطب مرتبط با بسته https را هنگام واکشی منابع به صورت ناهمزمان در یک شبکه از بین میبرد.
در اینجا نمونه ای از استفاده از API آورده شده است:
const getData = asyncfunction () {
try {
const res = await fetch("https://example.com/users");
const data = await res.json();
console.log(data);
} catch (error) {
console.log(`Something went wrong, ${error}`);
}
};
getData();
تابع getData در بالا یک درخواست GET برای واکشی منابع از “https://example.com/users” ارسال می کند. Fetch API همچنین یک پارامتر دوم اختیاری، یک شی گزینه را می گیرد. اشیاء گزینه باید حاوی جزئیات درخواست باشد. مثلا:
const userData = {
name: "Jon Snow",
age: 25,
gender: "M",
};
const postData = asyncfunction (data) {
try {
const res = await fetch("https://example.com/users", {
method: "POST",
body: JSON.stringify(data),
});
const responseData = await res.json();
console.log(
`The request was sucessful, Here are the details: ${responseData}`
);
} catch (error) {
console.log(`The request was unsucessful, Here are the details: ${error}`);
}
};
postData(userData);
اگرچه واکشی API هنوز آزمایشی است، اما باید برای اکثر کاربران به خوبی کار کند.
2. پشتیبانی از Web Streams API
به برنامه های چند رسانه ای یا بلادرنگ فکر کنید. این یک مورد اصلی استفاده از API جریان های وب است. وب استریمهای API مجموعهای از رابطها است که تجزیه برنامهای یک منبع بزرگ دریافتی از طریق شبکه را به قطعات کوچک امکانپذیر میسازد، سپس آن را ذره ذره پردازش میکند.
نمونهای از جریان، بدنه پاسخی است که توسط یک درخواست واکشی موفق بازگردانده میشود. بدنه پاسخ از نوع ReadableStream است.
NodeJS v18 یک پیادهسازی آزمایشی از API استریمهای وب را نشان میدهد. با این بهروزرسانی، APIهای جریان وب اکنون هم در کلاینت و هم در سرور در دسترس هستند و توسعه را سادهتر میکنند.
میتوانید فهرستی از جریانهای پشتیبانیشده در حال حاضر را در یادداشتهای انتشار رسمی پیدا کنید.
3. ماژول تست دونده
در نسخه های قبلی NodeJS، آزمایش بدون کتابخانه های شخص ثالث با کتابخانه ادعای داخلی انجام می شد.
کتابخانه ادعا نوشتن تست های ساده را آسان می کرد، اما محدودیت های قابل توجهی داشت که کار با مجموعه های آزمایشی متعدد را سخت می کرد. این محدودیتها نیاز به کتابخانههای شخص ثالث مانند Jest را برای اجرای آزمایشهای پیشرفتهتر تقویت کرد.
NodeJS v18 نیاز به کتابخانه های شخص ثالث را با معرفی ماژول تست اصلی خود NodeJS برطرف می کند. تست دونده از ویژگی هایی مانند آزمون های فرعی، رد شدن از آزمون، تست های پاسخ به تماس و غیره پشتیبانی می کند، بسیار شبیه به Jest.
برای استفاده از تست runner، باید عنوان را از assert و تست را از node:test وارد کنید. به پیشوند “node:” توجه کنید. این پروتکل جدید Node است که بسته های هسته گره را از بسته های ساخته شده توسط کاربر متمایز می کند.
const assert = require("assert");
const test = require("node:test");
در اینجا نمونه ای از یک تست ساده با استفاده از ماژول تست runner آورده شده است:
test("Check if strings are the same", (t) => {
assert.strictEqual("test", "test");
});
نتایج آزمون نمایش داده شده توسط دونده آزمون در قالب TAP (Test Anything Protocol) خواهد بود. توجه داشته باشید که این ویژگی هنوز آزمایشی است و ممکن است در هر زمان تغییر کند.
4. دیگر ارتقاء و رفع
به روز رسانی Node v18 همچنین دارای به روز رسانی موتور v8 به نسخه 10.1 است. موتور v8 زمان اجرا جاوا اسکریپت است که توسط NodeJS برای اجرای جاوا اسکریپت استفاده می شود.
به روز رسانی v8 آرایه متدهایfindLast و findLastIndex را در NodeJS در دسترس قرار می دهد و عملکرد فیلدهای کلاس و متدهای کلاس خصوصی را بهبود می بخشد.
NodeJS همچنین API های زیر را در حوزه جهانی در ارتقاء Node v18 نشان می دهد:
- لکه
- کانال پخش
ارتقا به Node v18
با استفاده از Node v18، می توانید یک برنامه کامل را بدون کتابخانه های خارجی آزمایش کنید، منابع را به صورت ناهمزمان و بدون کتابخانه های خارجی واکشی کنید، و جریان های وب را در سرور خود فعال کنید.
با این حال، شایان ذکر است که این ویژگی ها هنوز آزمایشی هستند و می توانند در هر زمان تغییر کنند. می توانید با استفاده از لینک دانلود رسمی به NodeJS v18 ارتقا دهید.