Node.js 23.0.0 şəbəkə proqramlarını JavaScript-də işlətmək üçün platforma buraxılıb. Node.js 23.0 7 ay ərzində (2025-ci ilin iyun ayına qədər) dəstəklənəcək ara filial kimi təsnif edilir. Yaxın günlərdə oktyabrın 22-da LTS statusu alacaq və 29-ci ilin aprel ayına qədər dəstəklənəcək Node.js 2027 filialının stabilləşdirilməsi başa çatacaq. Node.js 20.x və 18.x-in keçmiş LTS filiallarına dəstək müvafiq olaraq 2026 və 2025-ci ilin aprelinə qədər davam edəcək.
Əsas təkmilləşdirmələr:
- Açıq tip təriflərinə imkan verən TypeScript üçün eksperimental dəstək əlavə edildi. Dəstək "--eksperimental-strip-types" və "--experimental-transform-types" seçimlərindən istifadə etməklə aktivləşdirilir. Birinci variantda TypeScript ilə işləmək dilə aid tip təriflərinin təmizlənməsinə qədər azaldılır (tip yoxlanışı aparılmır, kod sadəcə tipsiz JavaScript-ə çevrilir). İkinci seçim nömrələr və ad boşluqları kimi bəzi TypeScript sintaksis elementlərini JavaScript koduna çevirir.
- JavaScript ESM modullarını (ECMAScript Modulları) sinxron rejimdə yükləmək üçün "tələb ()" çağırışından istifadə etmək imkanı default olaraq aktivdir. ESM modulları brauzerlərdə istifadə olunur və Node.js üçün xüsusi CommonJS modullarını əvəz edir. Node.js-də "require()" vasitəsilə yükləmək üçün ESM modulu sinxron şəkildə icra edilməlidir (yuxarı səviyyədə gözləmədən).
- “.js” uzantısı olmayan və ya olan fayllarda ESM modullarının avtomatik aşkarlanması təmin edilir. Əvvəllər, onların növü eyni kataloqda (“növ”: “modul”) yerləşən package.json faylında açıq şəkildə göstərilmədiyi halda, bu cür fayllar CommonJS modulları kimi qəbul edilirdi. Yeni versiyada növü package.json-da göstərilməyən fayllar üçün əvvəlcə CommonJS modulu kimi, bu uğursuz olarsa, ESM modulu kimi yükləməyə çalışır.
- Eksperimental tətbiq əlavə edildi brauzerlərlə uyğundur Veb Yaddaş API-si açar/dəyər məlumatlarının daimi (localStorage sinfi) və ya müvəqqəti (sessionStorage sinfi) saxlanması üçün nəzərdə tutulmuşdur. Veb Yaddaş dəstəyini aktivləşdirmək üçün API-ni "--experimental-webstorage" bayrağı ilə işlətmək və "--localstorage-file" bayrağı ilə saxlama faylına gedən yolu göstərmək tələb olunur.
- SQLite kitabxanasına əsaslanan SQL sorğu dili və yaddaşdan istifadə edərək verilənlər bazası ilə işləmək üçün eksperimental SQLite API əlavə edildi. Verilənlər bazasını diskdə faylda saxlamaqla yanaşı, fayl adının yerinə “:memory:” göstərilməklə yaddaşda da yerləşdirilə bilər. Yuxarıda qeyd olunan Web Storage API də SQLite üzərində tətbiq edilir və nəticədə SQLite Node.js üçün asılılıq kimi əlavə olunur.
- Package.json faylında müəyyən edilmiş skriptləri işə salmaq üçün nəzərdə tutulmuş “node —run” əmri stabil elan edilib.
- Modulların işə salınmasını əhəmiyyətli dərəcədə sürətləndirmək üçün diskdə tərtib edilmiş kodun keşləşdirilməsi üçün əlavə dəstək tətbiq edildi. Keşləmə NODE_COMPILE_CACHE mühit dəyişəni vasitəsilə aktivləşdirilir. Məqsədinə görə, xüsusiyyət v8-kompilyasiya-keş paketinə bənzəyir, lakin daha yüksək performans və ESM modullarının dəstəyi ilə fərqlənir.
- Buffer obyekti Buffer.copy() və Buffer.write() metodlarının işini əhəmiyyətli dərəcədə artırmaq üçün optimallaşdırılmışdır.
- node:fs modulunun performansı yaxşılaşdırılıb ki, bu da əməliyyat zamanı C++ koduna edilən zənglərin sayını azaldır.
- V8 mühərriki Chromium 12.9-da istifadə edilən 129 versiyasına yeniləndi.
- 32-bit Windows sistemləri üçün dəstək silindi.
- Node.js və V8 mühərrikində C++20 standartında müəyyən edilmiş funksiyaların tətbiqi ilə əlaqədar olaraq GCC kompilyator versiyası üçün tələblər artırılıb. Node.js-in qurulması indi ən azı GCC 12 tələb edir.
Node.js platforması həm veb tətbiqlərinin server tərəfində dəstəklənməsi, həm də standart klient və server tərəfində şəbəkə proqramlarının yaradılması üçün istifadə edilə bilər. Node.js tətbiqlərinin funksionallığını genişləndirmək üçün, tətbiq edənlər də daxil olmaqla, geniş modul kolleksiyası hazırlanmışdır. serverlər və HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 klientləri, müxtəlif veb çərçivələri ilə inteqrasiya üçün modullar, WebSocket və Ajax işleyiciləri, DBMS-ə (MySQL, PostgreSQL, SQLite, MongoDB) konnektorlar, şablon mühərrikləri, CSS mühərrikləri, kriptoqrafik alqoritmlərin və avtorizasiya sistemlərinin (OAuth) tətbiqləri, XML parserləri.
Çoxlu sayda paralel sorğuları idarə etmək üçün Node.js bloklanmayan hadisə emalına və geri çağırış işləyicilərini müəyyən etməyə əsaslanan asinxron kod icra modelindən istifadə edir. Əlaqələrin multipleksləşdirilməsi üçün dəstəklənən üsullara epoll, kqueue, /dev/poll və select daxildir. Bağlantının multipleksləşdirilməsi üçün Unix sistemlərində libev və Windows-da IOCP-ə əlavə olan libuv kitabxanasından istifadə olunur. Libeio kitabxanası mövzu hovuzu yaratmaq üçün istifadə olunur və c-ares bloklanmayan rejimdə DNS sorğularını yerinə yetirmək üçün inteqrasiya olunur. Bloklamaya səbəb olan bütün sistem çağırışları ip hovuzu daxilində yerinə yetirilir və sonra, siqnal işləyiciləri kimi, öz işlərinin nəticəsini adı açıqlanmayan boru vasitəsilə geri ötürür.
JavaScript kodunun icrası Google tərəfindən hazırlanmış V8 mühərrikinin istifadəsi ilə təmin edilir (bundan əlavə, Microsoft Chakra-Core mühərriki ilə Node.js versiyasını hazırlayır). Özündə Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted çərçivələrinə və Tcl-də hadisələrin həyata keçirilməsinə bənzəyir, lakin Node.js-dəki hadisə dövrəsi tərtibatçıdan gizlədilib və veb proqramda hadisənin işlənməsini xatırladır. brauzerdə işləyir.
Mənbə: opennet.ru
