Server tomonidagi JavaScript Node.js 16.0 versiyasi

Node.js 16.0, JavaScript-da tarmoq ilovalarini ishga tushirish platformasi chiqarildi. Node.js 16.0 uzoq muddatli qo‘llab-quvvatlash bo‘limi sifatida tasniflanadi, ammo bu holat faqat oktyabr oyida barqarorlashgandan keyin tayinlanadi. Node.js 16.0 2023-yil apreligacha qo‘llab-quvvatlanadi. Node.js 14.0 ning oldingi LTS filialiga texnik xizmat ko‘rsatish 2023-yil apreligacha va oxirgi LTS 12.0 filialidan oldingi yil 2022-yil apreligacha davom etadi. 10.0 LTS filialini qo‘llab-quvvatlash 10 kundan keyin to‘xtatiladi.

Asosiy yaxshilanishlar:

  • V8 dvigateli 9.0 versiyasiga yangilandi (Node.js 15 ishlatilgan reliz 8.6), bu oddiy iboralar uchun "indekslar" xususiyati kabi xususiyatlarni amalga oshirish imkonini beradi (gugurt guruhlari boshlang'ich va yakuniy pozitsiyalari bilan massivni o'z ichiga oladi) , Node.js 16 da Atomics usuli .waitAsync (Atomics.wait async versiyasi), yuqori darajadagi modullarda await kalit so‘zidan foydalanishni qo‘llab-quvvatlash. O'tkazilgan argumentlar soni funktsiyada belgilangan parametrlarga to'g'ri kelmasa, funksiya chaqiruvlari tezlashdi.
  • Timers Promises API barqarorlashtirildi va util.promisify() dan foydalanish zaruriyatini yo‘q qiladigan Promise obyektlarini chiqish sifatida qaytaradigan taymerlar bilan ishlash uchun muqobil funksiyalar to‘plamini taqdim etdi. "taymerlar/va'dalar" dan { setTimeout } ni import qilish; async function run() { kutish setTimeout(5000); console.log('Salom, dunyo!'); } run();
  • Veb-ilovalar tomonida kriptografik xeshlarni manipulyatsiya qilish, raqamli imzolarni yaratish va tekshirish, turli shifrlash usullaridan foydalangan holda ma'lumotlarni kodlash va dekodlash, kriptografik jihatdan xavfsiz yaratish kabi asosiy kriptografik operatsiyalarni bajarish uchun mo'ljallangan Web Crypto API-ning eksperimental ilovasi qo'shildi. tasodifiy raqamlar. API shuningdek, kalitlarni yaratish va boshqarish uchun funktsiyalarni taqdim etadi.
  • N-API (qo'shimchalarni ishlab chiqish uchun API) 8-versiyaga yangilandi.
  • NPM 7.10 paket menejerining yangi versiyasiga o'tish amalga oshirildi.
  • AbortController Web API-ga asoslangan va tanlangan Promise-asosidagi API-larda signallarni bekor qilish imkonini beruvchi AbortController sinfining joriy etilishi barqarorlashtirildi.
  • Yaratilgan, qayta ishlangan yoki paketlangan modullarni asl manba kodi bilan solishtirish uchun foydalaniladigan Manba xaritasi formatining uchinchi versiyasini qoʻllab-quvvatlash barqarorlashtirildi.
  • Eski veb-API-lar bilan muvofiqligi uchun buffer.atob(data) va buffer.btoa(data) usullari qo'shildi.
  • M1 ARM chipi bilan jihozlangan yangi Apple qurilmalari uchun komplektlarni shakllantirish boshlandi.
  • Linux platformasida kompilyator versiyasi talablari GCC 8.3 ga ko'tarildi.

Eslatib o'tamiz, Node.js platformasidan ham veb-ilovalarga serverga 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.

Qo'shimcha ravishda shuni ta'kidlash mumkinki, Node.js yaratuvchisi tomonidan yangi avlod Deno platformasini ishlab chiqish uchun asos solingan Deno kompaniyasi 4.9 million dollar sarmoya olgan. Maqsadiga ko'ra Deno Node.js ga o'xshaydi, lekin u Node.js arxitekturasida yo'l qo'yilgan kontseptual xatolarni bartaraf etishga va foydalanuvchilarga yanada xavfsiz muhitni taqdim etishga harakat qiladi. Ta'kidlanishicha, Deno biznes yechimlari butunlay ochiq mahsulotlarga asoslanadi va alohida pullik funksiyaga ega Open Core modeli Deno platformasi uchun nomaqbul deb hisoblanadi.

Manba: opennet.ru

a Izoh qo'shish