Server tomonidagi JavaScript Node.js 14.0 versiyasi

bo'lib o'tdi reliz Node.js 14.0, JavaScript-da tarmoq ilovalarini ishga tushirish uchun platformalar. Node.js 14.0 uzoq muddatli qo‘llab-quvvatlash bo‘limidir, ammo bu maqom faqat oktyabr oyida barqarorlashgandan keyin tayinlanadi. Node.js 14.0 qo'llab-quvvatlanadi amalga oshirilsin 2023 yil aprelgacha. Node.js 12.0 ning oldingi LTS filialiga texnik xizmat ko‘rsatish 2022-yil apreligacha va oxirgi LTS 10.0 filialidan oldingi yil 2021-yil apreligacha davom etadi. 13.x staging filialini qo'llab-quvvatlash joriy yilning iyun oyida tugaydi.

asosiy yaxshilanishlar:

  • Tezda yoki muayyan hodisalar sodir bo'lganda yaratish qobiliyati barqarorlashtirildi diagnostika hisobotlari, bu nosozliklar, ishlashning pasayishi, xotiraning oqishi, protsessorning og'ir yuklanishi, kutilmagan xato chiqishi va boshqalar kabi muammolarni aniqlashga yordam beradigan hodisalarni ko'rsatadi.
  • Eksperimental API qo‘llab-quvvatlashi qo‘shildi Async mahalliy saqlash qayta qo'ng'iroqlar va va'dalar asosida ishlov beruvchilar bilan asinxron holatni yaratish uchun ishlatilishi mumkin bo'lgan AsyncLocalStorage sinfini amalga oshirish bilan. AsyncLocalStorage veb-so'rov qayta ishlanayotganda ma'lumotlarni saqlash imkonini beradi, bu boshqa tillardagi mahalliy tarmoq xotirasini eslatadi.
  • Yuklashda tajriba funksiyasi haqida ogohlantirish xabari olib tashlandi modullar ECMAScript 6 import va eksport bayonotlari yordamida ulanadi va eksport qilinadi. Shu bilan birga, ESM modullarini amalga oshirishning o'zi eksperimental bo'lib qolmoqda.
  • V8 dvigateli versiyaga yangilandi 8.1 (1, 2, 3), yangi ishlash optimallashtirishlari va yangi mantiqiy birlashma operatori "???" (chap operand NULL yoki aniqlanmagan bo'lsa, o'ng operandni qaytaradi va aksincha), "?." operatori. barcha xususiyatlar yoki qo'ng'iroqlar zanjirini bir martalik tekshirish uchun (masalan, "db?.user?.name?.uzunligi" dastlabki tekshiruvlarsiz), mahalliylashtirilgan nomlarni olish uchun Intl.DisplayName usuli va boshqalar.
  • Streams API-ni qayta ko'rib chiqish amalga oshirildi, bu Streams API-larining izchilligini yaxshilash va Node.js asosiy qismlari xatti-harakatlaridagi farqlarni bartaraf etishga qaratilgan. Misol uchun, http.OutgoingMessage ning xatti-harakati stream.Writable ga yaqin, net.Socket esa stream.Dupleks ga o'xshaydi. AutoDestroy opsiyasi sukut bo'yicha "true" ga o'rnatiladi, ya'ni tugallangandan so'ng "_destroy" chaqirilishi kerak.
  • Eksperimental API qo‘llab-quvvatlashi qo‘shildi WASI (WebAssembly tizim interfeysi), operatsion tizim bilan bevosita o'zaro ta'sir qilish uchun dasturiy interfeyslarni ta'minlash (fayllar, rozetkalar va boshqalar bilan ishlash uchun POSIX API).
  • uchun talablar ortdi minimal versiyalar kompilyatorlar va platformalar: macOS 10.13 (High Sierra), GCC 6, Windows yangi 7/2008R2.

Eslatib o'tamiz, Node.js platformasidan ham veb-ilovalarni serverni qo'llab-quvvatlash, ham oddiy mijoz va server tarmoq dasturlarini yaratish uchun foydalanish mumkin. Node.js uchun ilovalarning funksionalligini kengaytirish uchun ko'p sonli modullar to'plami, unda siz HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 serverlari va mijozlarini amalga oshirish modullarini, turli veb-ramkalar bilan integratsiya modullarini, WebSocket va Ajax ishlov beruvchilarini, DBMS (MySQL, PostgreSQL, SQLite) ulagichlarini topishingiz mumkin. , MongoDB ), shablon dvigatellari, CSS dvigatellari, kriptografik algoritmlar va avtorizatsiya tizimlarini amalga oshirish (OAuth), XML tahlilchilari.

Ko'p sonli parallel so'rovlarni bajarish 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 usullarga epoll, kqueue, /dev/poll va tanlash kiradi. Kutubxona multipleks ulanishlar uchun ishlatiladi libuv, bu ustki tuzilma hisoblanadi libev Unix tizimlarida va Windowsda IOCP orqali. Kutubxona iplar hovuzini yaratish uchun ishlatiladi libeio, bloklanmaydigan rejimda DNS so'rovlarini bajarish uchun birlashtirilgan c-ares. Bloklashga olib keladigan barcha tizim qo'ng'iroqlari iplar hovuzida amalga oshiriladi va keyin, signal ishlov beruvchilari kabi, o'z ishining natijasini noma'lum quvur orqali qaytaradi. JavaScript kodining bajarilishi Google tomonidan ishlab chiqilgan vosita yordamida ta'minlanadi V8 (Bundan tashqari, Microsoft kompaniyasi Chakra-Core dvigateli bilan Node.js versiyasini ishlab chiqmoqda).

Asosiysi, Node.js ramkalarga o'xshaydi Perl AnyEvent, Ruby voqealar mashinasi, Python Twisted и amalga oshirish Tcl'dagi voqealar, lekin Node.js'dagi voqealar tsikli ishlab chiquvchidan yashirin va brauzerda ishlaydigan veb-ilovada hodisalarni qayta ishlashga o'xshaydi. Node.js uchun ilovalarni yozishda, masalan, “var natija = db.query(“select..”);” qilish o‘rniga, voqealarga asoslangan dasturlashning o‘ziga xos xususiyatlarini hisobga olish kerak. Ishning tugashini kutish va natijalarni keyinchalik qayta ishlash bilan Node.js asinxron bajarish tamoyilidan foydalanadi, ya'ni. kod “db.query(“tanlash..”, funksiya (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