آنچه در این مقاله میخوانید
معرفی نود جی اس نسخه 24
۹ مرداد ۱۴۰۴
نسخهی ۲۴ از Node.js رسما منتشر شده است و تغییرات قابل توجهی را در حوزههای عملکرد، امنیت، تستنویسی و تطابق با استانداردهای جدید جاوااسکریپت ارائه میدهد. این نسخه بهویژه برای توسعهدهندگانی که با اپلیکیشنهای وب، کدنویسی ناهمزمان (asynchronous programming) و مدیریت منابع سرور درگیر هستند، حائز اهمیت است.
در این مقاله، مهمترین ویژگیها و تغییرات نسخهی جدید Node.js را مرور خواهیم کرد.
سرور ابری NodeJS لیارا با پشتیبانی از مقیاسپذیری خودکار، امنیت بالا و مدیریت آسان، گزینهای ایدهآل برای راهاندازی سریع برنامههای NodeJS است.
✅ پشتیبانی از نسخههای مختلف NodeJS ✅ ترافیک نامحدود ✅ مدیریت آسان از طریق پنل کاربر
خرید هاست NodeJS
آنچه در ادامه خواهید خواند:
- ارتقای موتور V8 به نسخهی 13.6
- مدل دسترسی (Permission Model)
- استفاده جهانی از URLPattern
- بهبودهای مربوط به تست رانر داخلی Node.js
- ارتقای Undici به نسخه ۷ و بهروزرسانی npm به نسخه ۱۱
- حذف و منسوخ شدن قابلیتهای قدیمی
- جمع بندی
ارتقای موتور V8 به نسخهی 13.6
یکی از تغییرات بنیادین در Node.js 24، ارتقای موتور V8 به نسخهی 13.6 است. V8 موتور اجرای جاوااسکریپت است که در مرورگر Google Chrome نیز مورد استفاده قرار میگیرد و وظیفهی تفسیر و اجرای کدهای جاوااسکریپت را برعهده دارد.
این ارتقا علاوه بر بهبود عملکرد، پشتیبانی از قابلیتهای جدید جاوااسکریپت را نیز به همراه داشته است:
RegExp.escape
تابع جدید RegExp.escape
فرآیند فراردهی (escaping) کاراکترهای ویژه در عبارات منظم را ساده و ایمن میسازد. این ویژگی بهویژه در سناریوهایی که نیاز به پردازش ورودیهای کاربر دارید، کاربردی است.
jsCopyEditconst input = 'hello.*+?';
const safe = RegExp.escape(input);
// خروجی: hello\.\*\+\?
Float16Array
نوع دادهی جدید Float16Array
امکان استفاده از اعداد اعشاری ۱۶ بیتی را فراهم میکند. این قابلیت در زمینههایی مانند گرافیک، یادگیری ماشین و سایر کاربردهایی که به عملکرد بالا و مصرف حافظهی پایین نیاز دارند، مفید خواهد بود.
Atomics.pause
در برنامههایی که از Web Worker و پردازشهای همزمان (concurrent) استفاده میکنند، تابع جدید Atomics.pause
امکان توقف کنترلشدهی threadها را فراهم میسازد و کنترل دقیقتری بر عملکرد همزمان سیستم ارائه میدهد.
WebAssembly Memory64
با فعال شدن پشتیبانی از حافظهی ۶۴ بیتی در WebAssembly، اکنون میتوان از منابع حافظهای وسیعتری در پروژههایی با بار محاسباتی بالا استفاده کرد. این قابلیت برای اپلیکیشنهایی که نیاز به عملکرد شبه-Native دارند، بسیار ارزشمند است.

مدیریت منابع با await using
قابلیت جدیدی با عنوان Explicit Resource Management معرفی شده است که بهواسطهی کلمهی کلیدی await using
، مدیریت خودکار منابعی مانند فایلها یا سوکتها را امکانپذیر میسازد. این ویژگی از بروز مشکلاتی مانند نشت حافظه جلوگیری میکند.
jsCopyEditawait using file = await openFile('data.txt');
// پس از خروج از بلاک، فایل بهصورت خودکار بسته میشود
Error.isError
متد جدید Error.isError(value)
امکان بررسی دقیق اینکه آیا یک مقدار واقعاً یک شیء خطا (Error object) است یا خیر را فراهم میکند. این ابزار در مدیریت صحیح خطاها و افزایش قابلیت اطمینان کد مؤثر است.
مدل دسترسی (Permission Model)
در Node.js 20، مدلی با عنوان Permission Model بهصورت آزمایشی معرفی شده بود که در نسخهی ۲۴ با ثبات بیشتری ارائه شده است. فلگ مربوط به این قابلیت از --experimental-permission
به --permission
تغییر یافته است که بیانگر آمادگی آن برای استفادهی گسترده در محیطهای تولیدی است.
مدل دسترسی امکان محدودسازی فعالیتهای اپلیکیشن Node.js را فراهم میکند؛ از جمله خواندن یا نوشتن در فایلسیستم، انجام درخواستهای شبکهای یا دسترسی به متغیرهای محیطی (environment variables). این قابلیت گامی مهم بهسوی پیادهسازی اصل حداقل سطح دسترسی (Principle of Least Privilege) در اپلیکیشنهای سمت سرور است.
مثال:
bashCopyEditnode --permission-fs-read=data.json app.js
استفاده جهانی از URLPattern
در نسخههای پیشین، برای استفاده از URLPattern
نیاز به import دستی آن وجود داشت. اما در Node.js 24، این کلاس بهصورت سراسری (global) در دسترس قرار گرفته و امکان تعریف الگوهای URL بهصورت سادهتر و قابل خواندنتر فراهم شده است.
این قابلیت برای پیادهسازی مسیریابی (routing) در اپلیکیشنها، یا انجام تطبیقهای ساختاریافته بر روی آدرسها (URLs) بسیار مفید است.
jsCopyEditconst pattern = new URLPattern('/users/:id');
const match = pattern.exec('/users/42');
console.log(match.pathname.groups.id); // خروجی: 42
بهبودهای مربوط به تست رانر داخلی Node.js
تست رانر داخلی Node.js نیز در این نسخه بهبود یافته و اکنون قادر است بهصورت خودکار منتظر اتمام اجرای زیرتستها (subtests) بماند. این ویژگی از بروز خطاهای ناپایدار در اجرای تستها جلوگیری کرده و فرآیند نوشتن تستهای دقیقتر و قابل اطمینانتر را تسهیل میکند.
در نسخههای پیشین، عدم استفاده از await
در زیرتستها ممکن بود موجب اجرای ناقص آنها شود. اما در نسخهی جدید، این فرآیند بهصورت خودکار انجام میشود.
ارتقای Undici به نسخه ۷ و بهروزرسانی npm به نسخه ۱۱
در Node.js 24، کتابخانهی HTTP مدرن Undici به نسخهی ۷ ارتقا یافته است. این بهروزرسانی موجب بهبود پشتیبانی از استانداردهای HTTP و افزایش کارایی در زمان استفاده از متدهایی مانند fetch()
میشود.
همچنین، نسخهی ۱۱ از npm بههمراه Node.js 24 ارائه شده که تغییرات قابل توجهی را به همراه دارد:
- نصب سریعتر بستهها
- بهبود در بررسی امنیتی وابستگیها
- سازگاری بهتر با پروژههای مدرن
- حذف دستور
npm hook
- گسترش اثر
--ignore-scripts
به تمامی اسکریپتهای چرخهی عمر (lifecycle) - عدم استفاده از مسیر قدیمی بررسی آسیبپذیری در صورت بروز خطا
توجه: برای استفاده از npm 11، نسخهی Node.js باید حداقل برابر با 20.17.0 یا 22.9.0 باشد.
حذف و منسوخ شدن قابلیتهای قدیمی
همزمان با معرفی قابلیتهای جدید، Node.js 24 برخی ویژگیهای قدیمی را منسوخ یا در مسیر حذف قرار داده است. توسعهدهندگانی که با کدهای قدیمی کار میکنند، باید بهروزرسانیهای لازم را در نظر بگیرند.
موارد منسوخشده عبارتاند از:
- متد
url.parse()
— استفاده از API استاندارد WHATWG URL توصیه میشود. - ساختارهای قدیمی مانند
SlowBuffer
وtls.createSecurePair
- برخی ثابتهای فایلسیستم مانند
fs.F_OK
که در حال خروج از چرخهی پشتیبانی هستند.
جمع بندی
Node.js 24 یک بهروزرسانی مهم و کارآمد برای توسعهدهندگان حرفهای محسوب میشود. این نسخه با ارائهی قابلیتهایی مانند پشتیبانی از جاوااسکریپت مدرن، بهبود امنیت، سادهسازی فرآیند تستنویسی، ارتقای HTTP Client و حذف تدریجی ویژگیهای منسوخ، مسیر توسعهی اپلیکیشنهای Node را هموارتر، سریعتر و ایمنتر کرده است.
برای تیمها و پروژههایی که بهدنبال توسعهی پایدار، عملکرد بالا و امنیت بهتر هستند، بهروزرسانی به Node.js 24 توصیه میشود.