Server tomonidagi JavaScript platformasi Node.js 19.0 mavjud

JavaScript-da tarmoq ilovalarini ishga tushirish uchun platforma Node.js 19.0 chiqarildi. Node.js 19 - 2023-yilning iyunigacha yangilanishlari mavjud bo‘lgan muntazam qo‘llab-quvvatlash bo‘limi. Yaqin kunlarda Node.js 18 filialini barqarorlashtirish tugallanadi, u LTS maqomini oladi va 2025 yil apreligacha qo'llab-quvvatlanadi. Node.js 16.0 ning oldingi LTS filialiga texnik xizmat ko‘rsatish 2023-yil sentabrigacha va oxirgi LTS 14.0 filialidan oldingi yil 2023-yil apreligacha davom etadi.

Asosiy yaxshilanishlar:

  • V8 dvigateli Chromium 10.7 da qo‘llanilgan 107 versiyasiga yangilandi. Dvigateldagi Node.js 18 filialiga nisbatan o‘zgarishlar orasida Intl.NumberFormat API ning uchinchi versiyasini amalga oshirish qayd etilgan, bu esa formatRange yangi funksiyalarini qo‘shadi. (), formatRangeToParts() va selectRange(), to'plamlarni guruhlash, yaxlitlash va aniqlikni o'rnatish uchun yangi imkoniyatlar, satrlarni o'nlik sonlar sifatida talqin qilish qobiliyati. Qo'shilgan llhttp 8.1.0 va npm 8.19.2 bog'liqliklari ham yangilandi.
  • Import qilingan fayl o‘zgarganda jarayonning qayta boshlanishini ta’minlaydigan tomosha rejimini amalga oshirish bilan tajribaviy “node -watch” buyrug‘i taklif qilingan (masalan, “node -watch index.js” bajarilsa, jarayon shunday bo‘ladi: index.js o'zgarganda avtomatik ravishda qayta ishga tushiriladi).
  • Barcha chiquvchi HTTP/HTTPS ulanishlari uchun HTTP 1.1 Keep-Alive mexanizmini qo‘llab-quvvatlash yoqilgan, bu esa bir xil ulanish doirasida bir nechta HTTP so‘rovlarini qayta ishlash uchun ulanishni ma’lum vaqtga ochiq qoldiradi. Keep-Alive o'tkazish qobiliyati va unumdorligini oshirishi kutilmoqda. Odatiy bo'lib, ulanishni ochish vaqti 5 soniyaga o'rnatiladi. Server javoblarida Keep-Alive HTTP sarlavhasini tahlil qilish uchun qoʻllab-quvvatlash HTTP mijoz dasturiga qoʻshildi va Keep-Alive yordamida nofaol mijozlarni avtomatik uzish Node.js HTTP server ilovasiga qoʻshildi.
  • WebCrypto API barqaror toifaga o‘tkazildi, Ed25519, Ed448, X25519 va X448 algoritmlaridan foydalanadigan funksiyalar bundan mustasno. WebCrypto moduliga kirish uchun siz globalThis.crypto dan foydalanishingiz mumkin yoki talab('tugun:crypto').webcrypto.
  • DTrace, SystemTap va ETW (Windows uchun hodisalarni kuzatish) kuzatuv vositalarini qo‘llab-quvvatlash olib tashlandi, ularga xizmat ko‘rsatish tegishli qo‘llab-quvvatlash rejasi yo‘qligi sababli uni yangilab turish murakkabligi sababli noo‘rin deb topildi.

Node.js platformasidan ham veb-ilovalar serveriga texnik xizmat ko'rsatish, ham oddiy mijoz va server tarmoq dasturlarini yaratish uchun foydalanish mumkin. Node.js uchun ilovalarning funksionalligini kengaytirish uchun modullarning katta to‘plami tayyorlandi, ularda HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverlari va mijozlari, integratsiya modullarini amalga oshirish modullarini topishingiz mumkin. turli veb-ramkalar, WebSocket va Ajax ishlov beruvchilari, DBMS konnektorlari (MySQL, PostgreSQL, SQLite, MongoDB), shablonlash dvigatellari, CSS dvigatellari, kripto algoritmlari va avtorizatsiya tizimlari (OAuth), XML tahlilchilari.

Ko'p sonli parallel so'rovlarni qayta ishlashni ta'minlash uchun Node.js bloklanmaydigan hodisalarni qayta ishlash va qayta qo'ng'iroqlarni qayta ishlash vositalarini aniqlashga asoslangan asinxron kodni bajarish modelidan foydalanadi. Ulanishlarni multiplekslash uchun qo'llab-quvvatlanadigan usullar epoll, kqueue, /dev/poll va tanlash hisoblanadi. Ulanishni multiplekslash uchun Unix tizimlarida libev va Windowsda IOCP uchun qo'shimcha bo'lgan libuv kutubxonasidan foydalaniladi. Libeio kutubxonasi iplar hovuzini yaratish uchun ishlatiladi va c-ares bloklanmagan rejimda DNS so'rovlarini bajarish uchun birlashtirilgan. Bloklashni keltirib chiqaradigan barcha tizim qo'ng'iroqlari iplar hovuzi ichida amalga oshiriladi va keyin signal ishlov beruvchilari kabi o'z ishining natijasini noma'lum quvur (quvur) orqali qaytaradi. JavaScript kodining bajarilishi Google tomonidan ishlab chiqilgan V8 dvigatelidan foydalanish orqali ta'minlanadi (bundan tashqari, Microsoft Chakra-Core dvigateli bilan Node.js versiyasini ishlab chiqmoqda).

Asosan, Node.js Perl AnyEvent, Ruby Event Machine, Python Twisted ramkalari va Tcl hodisalarini amalga oshirishga o'xshaydi, biroq Node.js-dagi voqealar tsikli ishlab chiquvchidan yashirin va ishlayotgan veb-ilovada hodisalarni qayta ishlashga o'xshaydi. brauzerda. Node.js uchun ilovalar yozishda, masalan, "var natija = db.query("select..");" qilish o'rniga, voqealarga asoslangan dasturlashning o'ziga xos xususiyatlarini hisobga olishingiz kerak. Ishning tugashini kutish va natijalarni keyinchalik qayta ishlash bilan Node.js asinxron bajarish tamoyilidan foydalanadi, ya'ni. kod "db.query("tanlang..", funktsiya (natija) {natijani qayta ishlash});" ga o'zgartiriladi, bunda boshqaruv darhol keyingi kodga o'tadi va ma'lumotlar kelishi bilan so'rov natijasi qayta ishlanadi.

Manba: opennet.ru

a Izoh qo'shish