Server tomonidagi JavaScript Node.js 13.0 versiyasi

Mavjud reliz Node.js 13.0, JavaScript-da tarmoq ilovalarini ishga tushirish uchun platformalar. Shu bilan birga, Node.js 12.x ning oldingi filialini barqarorlashtirish yakunlandi, u uzoq muddatli qo'llab-quvvatlash relizlari toifasiga o'tkazildi, yangilanishlari 4 yil davomida chiqariladi. Node.js 10.0 ning oldingi LTS filialini qo‘llab-quvvatlash 2021-yil apreligacha, oxirgi LTS 8.0 filialini qo‘llab-quvvatlash 2020-yil yanvarigacha davom etadi.

asosiy yaxshilanishlar:

  • V8 dvigateli versiyaga yangilandi 7.8, unumdorlikni optimallashtirishning yangi usullaridan foydalanadi, ob'ektni destruksiyalashni yaxshilaydi, xotira sarfini kamaytiradi va WebAssembly bajarilishiga tayyorgarlik vaqtini qisqartiradi;
  • Xalqarolashtirish va kutubxonaga asoslangan Unicode uchun to'liq yordam sukut bo'yicha yoqilgan ICU (Unicode uchun xalqaro komponentlar), bu ishlab chiquvchilarga kod yozish imkonini beradi qo'llab-quvvatlovchi turli tillar va tillar bilan ishlash. To'liq icu moduli endi sukut bo'yicha o'rnatilgan;
  • API barqarorlashdi Ishchilar iplari, ruxsat berish ko'p oqimli voqea tsikllarini yaratish. Amalga oshirish worker_threads moduliga asoslanadi, bu sizga JavaScript kodini bir nechta parallel iplarda ishlatish imkonini beradi. Workers Threads API uchun barqaror qo'llab-quvvatlash, shuningdek, Node.js 12.x ning LTS bo'limiga qaytarildi;
  • Platformalarga talablar oshirildi. Hozir yig'ish uchun kerak kamida macOS 10.11 (Xcode 10 talab qilinadi), AIX 7.2, Ubuntu 16.04, Debian 9, EL 7, Alpine 3.8, Windows 7/2008;
  • Python 3 uchun takomillashtirilgan qo‘llab-quvvatlash. Agar tizimda ham Python 2, ham Python 3 mavjud bo‘lsa, Python 2 hali ham qo‘llaniladi, lekin tizimda faqat Python 3 o‘rnatilganda qurish imkoniyati qo‘shilgan;
  • HTTP tahlilchisining eski ilovasi (“—http-parser=legacy”) olib tashlandi. O'chirilgan yoki eskirgan qo'ng'iroqlar va xususiyatlar FSWatcher.prototype.start(), ChildProcess._channel, ReadStream va WriteStream obyektlarida open() usuli, request.connection, respond.connection, module.createRequireFromPath();
  • Kuzatish chiqdi 13.0.1 yangilanishi, bu bir nechta xatolarni tezda tuzatdi. Xususan, qo'llab-quvvatlanmaydigan versiyadan foydalanish haqida ogohlantirishni ko'rsatadigan npm 6.12.0 bilan bog'liq muammo hal qilindi.

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