Server tərəfində JavaScript platforması Node.js 20.0 mövcuddur

JavaScript-də şəbəkə proqramlarının icrası üçün platforma olan Node.js 20.0-ın buraxılışı baş tutdu. Node.js 20.0 uzun dəstək şöbəsinə təyin edilib, lakin bu status sabitləşmədən sonra oktyabr ayına qədər təyin edilməyəcək. Node.js 20.x 30 aprel 2026-cı ilə qədər dəstəklənəcək. Əvvəlki Node.js 18.x LTS filialına texniki qulluq 2025-ci ilin aprelinə, əvvəlki 16.x LTS filialına isə 2023-cü ilin sentyabrına qədər davam edəcək. 14.x LTS filialı aprelin 30-da, Node.js 19.x müvəqqəti filialı isə iyunun 1-də saxlanılacaq.

Əsas təkmilləşdirmələr:

  • V8 mühərriki Chromium 11.3-də istifadə edilən 113 versiyasına yenilənib. Chromium 19 mühərrikindən istifadə edən Node.js 107 filialı ilə müqayisədə dəyişikliklərdən String.prototype.isWellFormed və toWellFormed funksiyaları Array.prototype Array və TypedArray obyektlərinin dəyişdirilməsi üzrə surətlə işləmək üçün TypedArray.prototype üsulları, RegExp-də "v" bayrağı, ArrayBuffer-in ölçüsünü dəyişmək və SharedArrayBuffer-in ölçüsünü artırmaq üçün dəstək, WebAssembly-də tail-call.
  • İcra zamanı müəyyən resurslara girişi məhdudlaşdırmağa imkan verən eksperimental İcazə Modeli mexanizmi təklif olunur. İcazə Modeli dəstəyi işləyərkən "--eksperimental-icazə" bayrağını təyin etməklə aktivləşdirilir. İlkin tətbiqdə FS-nin müəyyən hissələrinə, uşaq proseslərə (--allow-child-process) yazmaq (--allow-fs-write) və oxumaq (--allow-fs-read) girişini məhdudlaşdırmaq variantları təklif edilmişdir. , əlavələr (--no-addons ) və mövzular (--allow-worker). Məsələn, /tmp qovluğuna yazmağa və /home/index.js faylını oxumağa icazə vermək üçün aşağıdakıları təyin edə bilərsiniz: node --experimental-permission --allow-fs-write=/tmp/ --allow-fs-read =/home/index.js indeksi .js

    Girişi yoxlamaq üçün process.permission.has() metodundan istifadə etmək tövsiyə olunur, məsələn, "process.permission.has('fs.write',"/tmp/test").

  • "--eksperimental-loader" seçimi ilə yüklənmiş ECMAScript xarici modulları (ESM) üçün işləyicilər indi əsas ipdən təcrid olunmuş ayrıca iplikdə icra olunur ki, bu da proqram kodu ilə yüklənmiş ESM modullarının kəsişməsini aradan qaldırır. Brauzerlərdə olduğu kimi, import.meta.resolve() metodu indi proqram daxilindən çağırıldıqda sinxron şəkildə icra olunur. Node.js-in növbəti filiallarından birində ESM yükləmə dəstəyinin stabil funksiyalar kateqoriyasına keçirilməsi planlaşdırılır.
  • TAP (Test Anything Protocol) formatında nəticələr qaytaran JavaScript testlərini yaratmaq və işə salmaq üçün nəzərdə tutulmuş node:test (test_runner) modulu stabil vəziyyətə köçürülüb.
  • Yeni filiala hazırlaşarkən URL təhlili, fetch() və EventTarget daxil olmaqla müxtəlif iş vaxtı komponentlərini sürətləndirmək üçün çalışmış ayrıca performans komandası yaradılmışdır. Məsələn, EventTarget-in işə salınması ilə bağlı əlavə xərclər iki dəfə azaldılıb, URL.canParse() metodunun performansı əhəmiyyətli dərəcədə yaxşılaşdırılıb və taymerlərin səmərəliliyi yaxşılaşdırılıb. Bundan əlavə, kompozisiyaya C++ dilində yazılmış yüksək performanslı URL analizatorunun - Ada 2.0 buraxılışı daxildir.
  • Tək icra olunan fayl (SEA, Single Executable Applications) formasında proqramların çatdırılması üçün eksperimental funksiyanın inkişafı davam etdirilmişdir. İcra olunan fayl yaratmaq indi JSON konfiqurasiya faylından yaradılan blobun əvəz edilməsini tələb edir (JavaScript faylını əvəz etmək əvəzinə).
  • Digər layihələrin tətbiqləri ilə təkmilləşdirilmiş Web Crypto API uyğunluğu.
  • ARM64 sistemlərində Windows üçün rəsmi dəstək əlavə edildi.
  • Bağımsız WebAssembly proqramları yaratmaq üçün WASI (WebAssembly System Interface) genişləndirmələri üçün davamlı dəstək. WASI dəstəyini aktivləşdirmək üçün xüsusi komanda xətti bayrağının təyin edilməsi ehtiyacı aradan qaldırıldı.

Node.js platforması həm Veb proqramların serverə texniki xidməti, həm də müntəzəm müştəri və server şəbəkə proqramlarının yaradılması üçün istifadə edilə bilər. Node.js üçün proqramların funksionallığını genişləndirmək üçün böyük modullar toplusu hazırlanmışdır ki, burada HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverləri və müştəriləri, inteqrasiya modulları həyata keçirən modulları tapa bilərsiniz. müxtəlif veb çərçivələri, WebSocket və Ajax işləyiciləri, DBMS konnektorları (MySQL, PostgreSQL, SQLite, MongoDB), şablonlaşdırma mühərrikləri, CSS mühərrikləri, kripto alqoritmlərinin və avtorizasiya sistemlərinin (OAuth) həyata keçirilməsi, XML analizatorları ilə.

Çoxlu sayda paralel sorğuların işlənməsini təmin etmək üçün Node.js bloklanmayan hadisələrin idarə edilməsinə və geri çağırış işləyicilərinin tərifinə əsaslanan asinxron kod icra modelindən istifadə edir. Əlaqələrin multipleksləşdirilməsi üçün dəstəklənən üsullar epoll, kqueue, /dev/poll və select-dir. Bağlantının multipleksləşdirilməsi üçün Unix sistemlərində libev və Windows-da IOCP üçün ə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ı iplik hovuzunun daxilində yerinə yetirilir və sonra, siqnal işləyiciləri kimi, işlərinin nəticəsini adsız boru (boru) vasitəsilə geri köçü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əri və Tcl hadisə tətbiqinə bənzəyir, lakin Node.js-dəki hadisə dövrəsi tərtibatçıdan gizlədilib və işləyən veb proqramında hadisələrin idarə edilməsinə bənzəyir. brauzerdə. node.js üçün proqramlar yazarkən, məsələn, "var nəticə = db.query("select..");" yerinə yetirmək əvəzinə, hadisəyə əsaslanan proqramlaşdırmanın xüsusiyyətlərini nəzərə almalısınız. işin tamamlanmasını və nəticələrin sonradan işlənməsini gözləməklə, Node.js asinxron icra prinsipindən istifadə edir, yəni. kod "db.query("seç..", funksiya (nəticə) {nəticənin işlənməsi});"-a çevrilir, burada idarəetmə dərhal sonrakı koda keçəcək və sorğunun nəticəsi məlumat gələn kimi işlənəcək.

Mənbə: opennet.ru

Добавить комментарий