Издание на JavaScript Node.js 17.0 од страна на серверот

Се случи објавувањето на Node.js 17.0, платформа за извршување на мрежни апликации во JavaScript. Node.js 17.0 е редовна гранка за поддршка со ажурирања до јуни 2022 година. Во наредните денови ќе заврши стабилизацијата на филијалата Node.js 16, која ќе добие статус LTS и ќе биде поддржана до април 2024 година. Одржувањето на претходната филијала Node.js 14.0 LTS ќе трае до април 2023 година, а претходната гранка 12.0 LTS до април 2022 година.

Главни подобрувања:

  • Моторот V8 е ажуриран на верзијата 9.5.
  • Продолжи имплементацијата на варијанти на основниот API врз основа на употребата на асинхрониот компјутерски интерфејс Promise. Покрај претходно предложените API на Timers Promises и Streams Promises, Node.js 17.0 го воведува Readline Promise API за читање податоци линија по ред користејќи го модулот за читање. увоз * како читачка линија од 'јазол:читање/ветувања'; import { stdin како влез, stdout како излез } од 'process'; const rl = readline.createInterface({ влез, излез }); const answer = await rl.question('Што мислите за Node.js?'); console.log('Ви благодариме за вашите вредни повратни информации: ${answer}'); rl.close();
  • Доставената OpenSSL библиотека е ажурирана на верзијата 3.0 (со користење на вилушката quictls/openssl со овозможена поддршка за протоколот QUIC).
  • Осигурете се дека верзијата Node.js е прикажана во оџакот за фатални грешки што предизвикуваат прекинување на апликацијата.

Дополнително, можеме да споменеме елиминација на две пропусти во тековните гранки на Node.js (CVE-2021-22959, CVE-2021-22960), кои овозможуваат извршување на напади од класата HTTP Request Smuggling (HRS), која дозволете, преку испраќање специјално дизајнирани барања за клиенти, да се вклопите во содржината на барањата од други корисници обработени во истата нишка помеѓу предниот дел и задниот дел (на пример, можете да постигнете замена на злонамерен JavaScript код во сесијата на друг корисник). Деталите ќе бидат откриени подоцна, но засега е познато само дека проблемите се предизвикани од неправилно ракување со празни места помеѓу името на заглавието на HTTP и дебелото црево, како и различното ракување со знаците за враќање на превозот и напојувањето на линијата во параметарскиот блок што се користи при положување телото на барањето на парчиња во режим „распарчено“.

Потсетиме дека платформата Node.js може да се користи и за серверско одржување на веб-апликации и за креирање обични мрежни програми за клиент и сервер. За проширување на функционалноста на апликациите за Node.js, подготвена е голема колекција на модули, во кои можете да најдете модули со имплементација на HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3 сервери и клиенти, модули за интеграција со различни веб-рамки, WebSocket и Ajax управувачи, DBMS конектори (MySQL, PostgreSQL, SQLite, MongoDB), мотори за шаблони, CSS мотори, имплементации на крипто алгоритми и системи за авторизација (OAuth), XML парсери.

За да се обезбеди обработка на голем број паралелни барања, Node.js користи асинхрон модел за извршување код базиран на неблокирачко справување со настани и дефиниција за ракувачи со повратен повик. Поддржани методи за мултиплексирање конекции се epoll, kqueue, /dev/poll и select. За мултиплексирање на поврзување, се користи библиотеката libuv, која е додаток за libev на Unix системите и IOCP на Windows. Библиотеката libeio се користи за создавање на базен на нишки, а c-ares е интегриран за извршување на барања за DNS во режим без блокирање. Сите системски повици кои предизвикуваат блокирање се извршуваат внатре во базенот на нишки и потоа, како ракувачи со сигнали, го пренесуваат резултатот од нивната работа назад преку неименувана цевка (цевка). Извршувањето на JavaScript кодот е обезбедено преку употреба на моторот V8 развиен од Google (покрај тоа, Microsoft развива верзија на Node.js со моторот Chakra-Core).

Во неговото јадро, Node.js е сличен на Perl AnyEvent, Ruby Event Machine, Python Twisted рамки и имплементацијата на настанот Tcl, но циклусот на настани во Node.js е скриен од развивачот и наликува на справување со настани во веб-апликација која работи во прелистувачот. Кога пишувате апликации за node.js, треба да ги земете предвид спецификите на програмирањето управувано од настани, на пример, наместо да правите "var result = db.query("select..");" со чекање за завршување на работата и последователна обработка на резултатите, Node.js го користи принципот на асинхроно извршување, т.е. кодот се трансформира во „db.query („избери..“, функција (резултат) {обработка на резултат});“, во која контролата веднаш ќе премине на понатамошниот код, а резултатот од барањето ќе се обработува како што пристигнуваат податоците.

Извор: opennet.ru

Додадете коментар